… the Wowza feature of git

tl;dr

Wowza! I found the killer feature in git - you can have your cake and eat it, too!

Every time I’ve had to move to a new VCS, there’s never been enough time available to move the complete history correctly. Linux had this problem in spades when they moved off BitKeeper onto git in a very-short-time.

The solution? Take your time to convert the history correctly (or not, you can correct later), then allow developers who want it to prepend it on their machines, without making their repo operate any differently from the latest one.

Read on for more about replace/graft feature.

Details

I only found a reference to this feature last a few weeks ago (Friday 17) - it is well buried. Grafting used to require breaking the warrenty, but is now supported as a first class command. More later, but to see a working example, see: https://github.com/hwine/git_playground/tree/master/prepend_history

Much thanks to Scott Chacon and his writeup on replace at http://progit.org/2010/03/17/replace.html