On Wed, Jul 21, 2010 at 3:43 PM, Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote: > What sort of workflows do you find bad with git-submodule that are > better with git-subtree? > > The submodule concept is simple, but a lot of the implementation is > bad IMO. It doesn't integrate well, e.g. you have to remember to do > git clone --recursive, or git clone and git submodule update --init > after that, submodules don't remember what branch you wanted, so git > submodule foreach 'git pull' doesn't DWYM (although I have a hack for > that) etc. In my experience, there is exactly one killer problem with submodules that people are looking to solve with git-subtree: Branching. If you have a random developer in your office and they need to make a patch to one of your subprojects in the course of making their main project work, with submodules this requires incredibly error-prone contortions involving branching both projects, making sure you have push access to both projects, learning how to use git-submodule, etc. And then merging that branch into someone else's branch is complicated, particularly if they've also applied their own changes to the subproject. With git-subtree, that developer just commits the changes to the merged project - and that's it. Then you or someone else, who knows how git-subtree works, at any point in the future, can submit the subproject changes upstream, or not, as appropriate. No amount of bugfixing in git submodule can fix this workflow, because it's not a result of bugs. (The bugs, particularly the disconnected-by-default HEADs on submodule checkouts, do make it a bit worse :( ) It would require a fundamental redesign to make this work nicely with submodules. git-subtree is certainly a fundamental redesign. Arguably there might be even better ways to design it, of course. And submodules are good for certain other situations that git-subtree isn't, so it's obviously not a one-for-one replacement. If we can get some kind of consensus in principle that git-subtree is a good idea to merge into git core, I can prepare some patches and we can talk about the details. Have fun, Avery -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html