[darcs-users] current status of darcs

Grant Husbands grant.husbands at businesswebsoftware.com
Wed Mar 7 17:26:28 UTC 2007


William Morgan wrote:
> I can make many convincing arguments for the usefulness of 
> distributed, changset-based VC, but what I don't have a sense 
> of is how stable and reliable darcs is. I'll be in big trouble
> if things go awry. :)

The concepts behind Darcs are mostly excellent. When it has worked, it 
really has been the best version control experience I've had.

> 1. The first question on the FAQ mentions certain types of conflicts can
>    cause darcs to hang. It then points to a bugreport that is a year
>    old. Is this still an issue? Is it a common occurrence? In such a
>    situation, is it easy to solve, or difficult?

This issue is something that's causing the company I work for to try to 
move away from Darcs. We've had a number of issues with it, which I'll 
list and explain:

1. Hanging
We've had a large number of 'hangs' when trying to interact with our 
main (and largest) repository. These can sometimes be 'solved' by 
leaving Darcs running for a large number of hours, but we estimate that 
the time needed for most of our 'hanging' operations is now measured in 
days.

2. "impossible case" error messages.
When conflict resolution gets complicated, Darcs sometimes gives an 
"impossible case" error message, rather than annotating the files in the 
usual manner.

3. Excessive memory usage. (Heap exhaustion)
Darcs will very often exceed its standard heap limit. Raising it to the 
maximum often helps, but sometimes you just can't provide enough RAM for 
it to complete the operation you're requesting. 2GB isn't enough.

4. Repository corruption.
If there's a locked file in a repo, and an incoming patch changes it, 
Darcs will terminate and leave the repository inconsistent. When it does 
so, it has updated its internal copy of each file affected by the 
patches you've pulled but not your working copy. This means that Darcs 
then believes that you've altered your working repository to hold the 
inverse of those patches. This is often recoverable, if you know how.

5. Broken input handling in Windows.
Quite often, when using Darcs from the windows command prompt, Darcs 
will stop accepting keyboard input. The only solution is to close the 
command prompt or use Task Manager to kill Darcs, try again and hope it 
doesn't happen again. We normally use TortoiseDarcs, so this is not as 
much of an issue as it might seem.

6. Unusable over a VPN.
If you try to use another darcs repo over a fileshare that you're 
accessing over a VPN, you'll find it incredibly slow. This is, I 
believe, down to latency on file operations and the fact that Darcs 
initiates a large number of them. I've only tried this with one VPN; I 
do not know whether or not it is true for others.

7. Speed problems.
All of our users now complain about Darcs being slow. Though there is 
some advice often given on the darcs mailing lists that might solve it 
in the typical case, it doesn't do anything useful for us.

8. Cannot get old versions of large repositories.
If you try to get an old version of a large repository, Darcs can take a 
very long time (and sometimes run out of RAM). There are workarounds for 
this, but they aren't always obvious.

9. Conflict resolution.
This could come under Hanging or Speed problems, to be fair, but it's a 
significant issue in its own right. The current conflict resolution 
system in Darcs is known to be unsuitable in many ways. It's easy to get 
exponential conflict resolution, and active parallel development 
branches quickly become impossible to maintain. This negates much of the 
advantage of Darcs' patch management.

> Alternatively, if there's another VCS I should be considering
> (commercial or not), I'd be interested.

As would I. Mercurial has been mentioned, here, before, and is certainly 
on my list of systems to investigate.

> I really like being able to pick out individual hunks when creating a
> changeset, and it's not clear to me that the darcs alternatives offer
 > that.

It is a useful feature and appears to be unique to Darcs. Whichever 
version control system my company moves to, we'll probably make sure we 
can do something like it, even if that entails alteration.

Regards,
Grant Husbands.



More information about the darcs-users mailing list