These are Simon Marlow's notes on areas that darcs needs to improve on to be
useful for GHC:
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.
Attachments
|