[development] Git best practices for client codebases

Gábor Hojtsy gabor at hojtsy.hu
Wed Mar 2 07:36:23 UTC 2011

On Wed, Mar 2, 2011 at 7:10 AM, Sam Boyer <drupal at samboyer.org> wrote:
>> Also, if you want to manage both core and contrib modules that way it
>> means you are now using git submodules, which it's generally agreed suck
>> AFAIK, or complex sub-tree merging that is out of reach of 99% of
>> developers.  Hell, I've done it and I don't want to do it. :-)
> Git submodules don't suck across the board. They only suck if you try to
> use them for the wrong purpose - namely, general dev. Which is what most
> people try to use them for, and then get frustrated. However, they can
> be *very* effective as part of a strategy for developing a real client
> site, where you actually do want to record submodule updates in the
> parent repo (e.g., when you update a set of modules from upstream, you
> reflect that in the parent repo with a commit of all the updated
> submodules).
> Yes, subtrees are a doozy that don't ever enter most folks' repertoire.
> But plain, nested git repos (that just ignore each other) works
> delightfully well. They can't rebuild themselves on new servers, but if
> your deployment strategy is rsync, that's moot.

Well, it would be good to document the suggestion for "nested git
trees with gitignores" as a best practice if you think it is, because
last I've asked on #gitsupport, subrepos were suggested as per
(no they did not add that they suck :). The guide currently linked
from the main Git docs page for site builders
(http://drupal.org/node/803746) is very outdated (assumes contrib is
in CVS, and generally that you use a git repo mirrored from CVS), and
developers flock to blog posts like that which seem to be up to date
and supposedly contain best practice suggestions.


More information about the development mailing list