The Exodus: Leading Drupal out of CVS

Printer-friendly versionPrinter-friendly version

(notes from a session at DrupalCon 2010)

How did we get here?

  • Why are we still on CVS? lots of legacy code and inertia, but Webchick sat down to figure it out
  • Why not Subversion? Some annoying limitations with merging, etc.
  • Why Git? just seemed to be best fit, had most community support

Git is not as scary as you may think

  • how CVS does it: centralized, developers check in with central server
  • Git is distributed: shared repository checked into from various local repositories, developers interact with local respository
  • This means you can actually commit data to the repository while offline; local respository will check in later.
  • instead of checkout/update/diff/commit, commands are clone/pull/diff/commit/push

The deployment plan

  1. finish up the plan, give this presentation today!
  2. maintain testing, read-only Git mirror of the CVS repository.  Currently about 98% perfect, leaving only some contrib projects. Need to sync the mirror more regularly so people can start setting up their local repositories.
  3. move projects to Git without changing the way we collaborate on drupal.org
  4. create one repository per project. This requires updating packaging scripts, updating test bot, implementing access control and repository creation, checking for errors
  5. this (steps 3-4) will have to be done in a "big bang" fashion -- all or nothing.
  6. fully embrace distributed nature of Git: create a repository for each issue in the queue, allowing anyone to commit code to that repository and anyone to "branch" it to suggest alternative solutions.
  7. host "sandbox" repositories for anyone who asks; promote to project status after community review.

How you can help

  • join the "Git Migration Team" group on groups.drupal.org
  • join the architecture planning sprint on Thursday 4/22
  • help write documentation, tutorials, etc.