RFC: migrating to git

Simon Marlow marlowsd at gmail.com
Mon Jan 10 12:19:23 CET 2011

It's time to consider again whether we should migrate GHC development 
from darcs to (probably) git.

 From our perspective at GHC HQ, the biggest problem that we would hope 
to solve by switching is that darcs makes branching and merging very 
difficult for us.  We have a few branches of HEAD that are very painful 
to keep merged with HEAD, and we would almost certainly have more 
branches if the overhead were lower.  In some sense the overhead is 
self-inflicted because we have the no-conflict policy in the mainline 
repository, but that is to avoid problems with darcs' merging algorithms 
(both performance and correctness).  We are still using darcs v1 patches 
rather than v2, but there are known problems with v2 which are 
preventing us from upgrading.

The darcs team have been making great strides with performance, but 
conflict handling remains a serious problem.  The darcs roadmap doesn't 
show this being fixed in the near future


Rebase support is coming, and it does work, though the workflow is a bit 

Besides the branching/merging/conflict issue, switching to git would 
give us plenty of side benefits, notably via access to a wealth of tool 
support.  Making contribution easy is important to us too, and there are 
a lot of people using git.

The cost of switching is quite high, which is one reason we decided to 
stay with darcs last time.  We have multiple repos that need to be 
converted, and for some of them, where the repo is being shared with 
other projects, we may have to mirror rather than convert in place. 
We're prepared to put in the effort if the gains would be worthwhile 
though (offers of help are more than welcome!).

We're intrested in opinions from both active and potential GHC 
developers/contributors.  Let us know what you think - would this make 
life harder or easier for you?  Would it make you less likely or more 
likely to contribute?


More information about the Glasgow-haskell-users mailing list