+5  A: 

The second example contains a hint: binary store vs. text store

For example, if You write a game (let's say a flight simulator), then You may want to put the source code and the terrain height data into different repositories, because:

  • The terrain data will not change very often.
  • It takes ages to check them out (huge binary files) => Including it with an external (that is bound to a specific revision) saves time.
  • Developers can checkout the source code over a small-bandwith connection (from home or using a cell phone).
  • You have distinct development teams (level/terrain designers vs. engine developers).
  • The backup policy for the source code (small, changes frequently) can be different from the terrain data (huge, does not change very often)
Black
A: 

It's more to do with policy than the data type itself.

The normal trunk tags * branches layout is really designed for code. It probably isn't the best way to organize your company documents, for example.

For a lot of data, you can truncate svn history to save space, but for code you probably really don't want to do that very often.

Once data's in a repository, it's blessed hard to get it out. If you've got to perform surgery to remove someone's address from a word document, you can avoid importing all the code revisions as well.

etc, etc.

Jim T