views:
80answers:
2The 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)
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.