Open source projects like git, commercial companies tend to perforce or mercurial. Undoubtedly, git is more than plain SCM, rather a valuable tool during development. Heard about Commit often, perfect later, publish once? So I used to utilize git-p4 few years ago. And even more interesting story now.

The company I work for currently uses Mercurial. Although it’s distributed like git and most commands can easily be substituted, it still lacks git’s agility. I really like the idea to develop large piece of software in small consistent steps. I do have to return to my past commits and reorder, fix up, move changes from one to another quite often. Not to mention branching and merging.

It’s possible to do all my tasks in mercurial too, but it wasn’t designed for such workflow frankly speaking. For instance, I tried hg histedit the other day, but having changed my mind, tried hg histedit --abort in expectation to end up where I started. Guess what? My history was lost, but fortunately newer versions of files survived.

So I found the compromise: hg-git. Thus, I use git locally: commit, edit, fix; then when I’m satisfied, import changes to mercurial and push them.