Originally Posted by Marlon_
Git has submodules
, "links" to other repositories within a repository, if that's what you mean with "subtrees"?
No, it's worse than it. If only
it could be handled by submodules.
Imagine it like this: for each file on your Workbench partition there's a Git submodule which contains all the source code for that file. This gives about 400 individual submodules, each with own change history and tags (remember: the tag names are not unique, they only uniquely identify releases within each submodule history). The Kickstart modules add another 60 submodules. Library source code, header files, build tools, etc. add some more 20-30 submodules.
This would in effect create a Git repository which consists of nothing but submodules.
According to how I learned to use Git, this type of layout does not play to Git's strengths.
If one were to make it fit what makes Git's intended purpose shine, one would have to figure out a way to deal with the thousands of tags attached to the files in this collection, or discard the tags entirely.
This would, however, result in a loss of change history. It would be difficult to mark which release version of each submodule is which.
Because SVN does not enforce a particular layout of the data and lets you pick any directory structure you might choose (scary thought: or any directory structure it might choose for you
), it handles all of this better than Git was designed to. That's the nature of it.