The PostgreSQL project will be making its second attempt to migrate from CVS to git this coming Monday. In a previous blog post, I talked about some of the difficulties we've had getting a clean conversion of our project history to git. I was surprised that a number of people suggested throwing out our development history and just moving the head of each branch to git; and I agree with some of the later comments that this would be a bad idea. I refer back to our development history fairly frequently, for a variety of reasons: to determine when particular features were introduced, to determine what patch last touched a particular area of the code, to see how old a particular bit of code is, and sometimes even to model a new patch on a previous patch that added a similar feature. So I'd find it very painful to lose convenient access to all of that history. Even a somewhat messed-up conversion would be better than no conversion at all.
Fortunately, it looks like we're going to end up with a pretty darn good conversion. Tom Lane spent most of last weekend cleaning up most of the remaining infelicities. The newest conversions are a huge improvement over both our current, incrementally-updated conversion (which is what I use for day to day development) as well as earlier attempts at a final conversion. Only a handful of minor artifacts remain, mostly because of wacky things that were done in CVS many years ago. Our use of CVS in recent years has been quite disciplined, which is why such a clean conversion is possible.