Version control systems

Thomas Schilling nominolo at
Sun Aug 10 10:24:49 EDT 2008

I had my share of problems with Darcs;  working on the GHC API I  
constantly have to avoid conflicts.  My temporary workaround is to  
not update at all.  Maybe switching to Darcs 2 format would help  
here, but there are other issues.

I initially converted GHC to Git to be able to more easily checkout  
older versions (e.g., to find a build bug using git-bisect) but with  
external core libraries this just doesn't work.  Right now, there is  
simply no practical way to check out an old, building version of GHC!

Even if we'd switch to Darcs 2 this problem could not be solved.  We  
would also still need turn to the Git repo to get change histories  
for specific files or to run commands such as 'git-blame' (unless you  
don't mind getting a cup of coffee and some biscuits each time you  
run those commands).

I think we can make things easier for existing library contributors  
by providing a darcs/git cheat sheet or even a command line wrapper.   
Previous attempts at creating such a wrapper have been abandoned,  
possibly because some commands cannot easily be modelled in Git.   
However, if we accept some limitations this is doable.  In particular  
the tricky commands are:

   darcs pull  -- (save) cherry picking requires patch dependency  
   darcs push  -- same as above

   (darcs pull -a  and  darcs push -a  both can be modelled easily)

   darcs replace  -- not directly supported in Git, but could be  
                  -- with a script.

If these missing features don't feel like too big a handicap the  
change should be fairly easy for existing contributors.  (And with  
some time they can start and learn Git's other features.)

For our build woes integrating the libraries and the main GHC repo in  
one Git repo will be very helpful, since we can now just instruct  
build bots to try and build revision 12345deadbeef and be happy.

/ Thomas
My shadow / Change is coming. / Now is my time. / Listen to my muscle  
memory. / Contemplate what I've been clinging to. / Forty-six and two  
ahead of me.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part
Url :

More information about the Glasgow-haskell-users mailing list