Version 3 (modified by Bart, 7 years ago) (diff)

Explaining the motivation of git-subtree

Gitification of Indymedia linksunten


Until May 2012,Indymedia linksunten used the Good Old Fashioned Way™ to keep track of upstream changes to it's Drupal (in fact: Pressflow) core and modules: drush dl mymodule. At least in theory. In reality, the core has been patched twice, many modules even more and some self-written modules do not even exist in a public drupal repository. linksunten has some 80 modules installed and keeping track of updates is wearisome for the non-patched modules and troublesome for the patched modules. We learned that a version control system could ease the error-prone update procedure and as has switched to git we decided to do the same.

Since a Drupal website is not a monolithic bloc and nearly each module is maintained by different developers we needed to find a way to update the core and each module separately from one another. The traditional way git offers for this is a concept called git-submodule. It complicated, unintuitive and detested by many for good reasons. But as git follows the TMTOWTDI paradigm we could avoid using git-submodule and settled for git-subtree instead which has recently been merged into git core. Besides the possibility to update the core and each module separately and replaying our patches to the updated version automatically, we want the linksunten code to be one git repository which simply "works" after cloning it. After our move to git we will use the features module to version control as much of our configuration data as possible.