Version control systems

Simon Marlow marlowsd at
Mon Aug 11 08:57:01 EDT 2008

Duncan Coutts wrote:

> It's not clear to me that we've really bothered to find out. The last
> evaluation in relation to ghc that I'm aware of was prior to the 2.0
> release. My impression is that we've all complained about the darcs v1
> problems (justly) but spent the most effort investigating things other
> than darcs v2 which would be the easiest to upgrade to and not have the
> problems of using two different systems for ghc vs other libs.

I promised to put together our reasoning on why we don't think moving to 
darcs2 would help enough.  Here's a summary:

  - using the darcs2 format may well fix the exponential-time merge problem,
    but the UI for merging conflicts is still lacking in many important ways
    in darcs:

    * The conflict markers are not annotated with the patch that they came
      from, and the ordering of patches in conflict markers is
      non-deterministic (when I asked about this problem, I was told it was
      hard to fix).

    * The 'darcs changes' output only shows one of the patches that is
      conflicting, you have to guess at the other one(s).  Also, it doesn't
      show which patches are conflict resolutions.

  - Performance.  darcs2 regressed in performance for many operations we
    commonly use.  I've submitted some measurements for some things, but
    it's pretty easy to find your own test cases: things like "darcs add",
    "darcs whatsnew", "darcs unrecord" are all slower than darcs 1.  When
    simple operations take multiple seconds to complete, it really slows
    down your workflow.

  - I still can't use 'darcs annotate' because it's too slow.  Also, we
    can't browse the GHC repository on the web because the web interface
    wants to do 'darcs changes <file>', and that takes minutes.  It's
    possible with caching, but you still have to regenerate the cache
    after a change.

  - why can I do a complete git clone of a remote GHC repo in a few minutes,
    but it takes hours to do a complete 'darcs get'?

  - Bugs.  Many bugs have been fixed in darcs2, which is great, but we
    did already encounter one (hard to reproduce) bug on Windows,
    when trying to get an up-to-date repo.  Perhaps bugs will be less of
    an issue in the future, but we have had painful experiences
    particularly on Windows and I know the darcs developers are still
    not actively testing on Windows.

FWIW, I'd also like to stay with darcs because it has the right model, but 
unfortunately the current implementation is not useable for us, and it's 
holding us back.

I'll say something about core libs in a separate mail.


More information about the Glasgow-haskell-users mailing list