Skip to content
A collection of scripts to facilitate easy interoperation between a local git workflow and drupal contrib CVS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



This set of scripts allows Drupal developers full interoperation between an all-git local environment and Drupal's CVS repositories. "All-git environment" means that you can create a full drupal instance by cloning off of the git repositories created by this script. Core, contrib, everything. "Interoperation" means that your local repositories can chase very closely after CVS commits made in contrib, and seamlessly integrate those into the environment you've created using standard git fetch/merge type operations.

While these scripts can handle core, the repo generated will differ from the semi-canonical git mirror of core (; these scripts strip CVS keywords in order to make CVS interoperation cleaner, but that mirror does not. This results in differing commit IDs. So you may want to use that mirror for core, instead.

Initial Setup

First step is configuring the drupal_sync.conf file, which will need to be placed at /etc/drupal_sync.conf. If you already have a local rsync'd copy of Drupal CVS on your system, make sure to set CVSSRV to the base of that CVS repository (i.e., to the parent directory containing the CVSROOT dir). Details on setting up an rsync'd local CVS mirror, can be found at, if needed.

Once your drupal_sync.conf file is appropriately placed, simply run the included drupal_sync script with the argument 'all':

$ drupal_sync all

This will update your local mirror, then build all the local git repositories. Bare repositories will be built and placed at:

# Contrib
# Core


These scripts require rsync, cvs, cvsps, git, find, grep, sed. Nothin fancy.

You can’t perform that action at this time.