Lessons from PostgreSQL’s Git transition

“The PostgreSQL Project finally switched from CVS to Git in
September 2010, and did its first release based on the new Git
repository on October 5. Making the switch happen took years and
resulted in at least one near-disaster. Other projects that are
contemplating, or working on, a transition in their version control
system may find useful lessons in how PostgreSQL fared.

“A History of CVS

“Switching version control systems is a relatively
straightforward process for a young project, but not for an old
one. From 1996 through mid-September 2010, the PostgreSQL Project
was developed using CVS. In fact, the date the CVS server went live
— July 8, 1996 — is generally considered the “birthday”
of the open-source project, which came out of the ten-year-old
university project. Twenty-one major releases and 154 minor
releases were committed, branched, and packaged on CVS. A large web
and development infrastructure existed around CVS, as well as a
multi-step, multi-role release procedure.

“In 2004, as Subversion was beginning to become popular,
PostgreSQL contributors first started to argue about switching away
from CVS. However, Subversion was not seen as sufficiently mature
at the time, or as offering enough advantages over CVS. This
discussion, and occasional flamewars, continued to crop up on the
main “pgsql-hackers” mailing list. Those who wanted to migrate off
of CVS split into multiple camps based on the system they
preferred, including Subversion, Arch, and Monotone. And, of
course, a large group of developers saw no reason to change at

Complete Story