On moving source control systems

Posted: April 29, 2010 in postgresql
Tags: ,

I’m trying to get the Slony project to give up cvs in favour of git. Being somewhat new to the project I don’t want to come off as too quick to change things but the topic has come up before and there wasn’t enough critical mass to actually make a change.

The Postgresql project has been a cvs based project for quite sometime, back in 2003 when Slony was first released it was hosted under the Postgresql gborg repository (a site where postgresql related projects could be hosted) it used cvs as well. Over the years there was been talk about moving to a more modern source control system but nothing seems to have come out of it.

I believe distributed source controls systems (DVCS) are the future for open source projects and have changed the way software is developed in the open source projects that have switched to them. With a DVCS such as git you don’t have just single source repository, instead everyone can have their own clone of the source repository which they can commit their changes to. Developers can share their cloned repositories thus making their changes public before committing them to the main repository. This makes it much easier to share non-finished code. A decent DVCS systems makes merging and tracking changes a lot easier than it used to be with cvs or svn. It is also a lot easier to work on multiple on related features at once. With cvs I’ve found myself checking out multiple copies of the source tree. I might have one for a larger feature that I’m doing that could take weeks to months of calender time to code. Then I often find myself checking out additional copies of the entire source tree to work on smaller bug fixes. If I want those bug fixes to be available to my larger body of work before they are committed to the main repo I’m likely in for some pain.

With git I just created a separate topic branch for the bug fixes (based of the mainline source), check my larger ,work in progress, changes to my private local clone of the repository and fix the bug on the topic branch. I can then merge the fix into my other branch. If at some later time my bug fix gets committed to the mainline, git will detect that the fix has already been applied to my branch and ignore it.

I’m hoping that giving developers a forum to post/share/track their Slony fixes will encourage more people to get involved with Slony development (historically the slony project hasn’t been that timely about committing or rejecting patches)

I’m pushing for git over any of the other DVCS systems because I’ve worked with it before and the Postgresql project has been evaluating it. The last thing I want Slony developers to have to do is spend a lot of time evaluating all of the different DVCS systems (the thought makes sticking with cvs appealing).

Nothing is going to happen until after pgcon (where rumor has it the Postgresql developers are going to discuss their use of git
) but I’m hoping we’ll have enough consensus and support to make a move then. So far no one has put forward an argument for staying with cvs.

In the meantime I’ve pushed my git clone (via cvsimport) of the source tree to github at http://github.com/ssinger/slony

  1. Greg Smith says:

    It’s easy to confirm the rumor that the final steps toward git conversion are being discussed at the developer meeting: http://wiki.postgresql.org/wiki/PgCon_2010_Developer_Meeting

    I would argue that using a DVCS is not the future of open-source development–it’s the present. It’s what most large projects are already doing. At this point CVS is from the past, a legacy system everyone who’s paying attention is abandoning, not even still mainstream.

  2. PGCon is only a couple of weeks away, so this argument is slightly moot, but I suggest you do not wait for anyone else, such as the PostgreSQL core, to take the lead. Everything around PostgreSQL, including add-ons and such, are moving on, and so should you.

  3. Vadim says:

    Have you considered Mercurial?

    • I haven’t really, I don’t have an first hand experience with Mercurial. It hasn’t been excluded per say but I don’t think it would be a good use of the slony development teams time to spend a lot of time evaluating lots of source control systems. My take is that git is ‘good enough’ for what we need it is used by enough other projects that many people will have already had some exposure to it. If the postgresql project decides to switch in a few weeks then that just adds more weight to the decision.

      If they don’t make a decision (or decide to stick with cvs for another year) then then I’m still hoping the ‘git is good enough’ will be accepted or someone is able to quickly convince enough people of another DVCS so we can make a switch soon and avoid 6 months of debate.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s