[darcs-users] *practical* differences between darcs' patch model and git/mercurial's?

Douglas Philips dgou at mac.com
Thu Oct 25 06:11:01 UTC 2007

>> Unfortunately, it seems like the case where the theory of patches
>> offers an advantage happens to be precisely the case where darcs  
>> falls
>> over because of exponential time problems.  So perhaps there's
>> actually no difference in practice.
> In my opinion, it's not too hard to avoid tripping over that case  
> if you
> don't allow branches to drift too far apart, and take precautions to
> avoid the problem (for example, we tend to prefer amend-record over
> leaving mergers around in patches, where possible). This is obviously
> highly dependent on your usage patterns, though, and I'll admit that
> none of my projects are particularly large; the largest is  
> currently at
> 2297 patches comprising 25MB of compressed patch data, with the  
> pristine
> copy totalling 73MB of data.

In practice I don't think it is so easy to avoid.
While I love darcs' philosophy, I've had to give up on using it for  
the time being because even a two-person pilot/trial ran into this  

We had one repo (on an OpenBSD box) we pushed to for backups.
We both had one or two personal repos (Windows XP, Mac OS X, GenToo).
Usually we worked jointly in one repo and pushed to the backed-up  
repo several times a day.
A few times a month one of those would take forever, even though all  
the previous pushes that day (and subsequently) were from the same  
client repo and didn't have that problem.

We had another machine (GenToo) that pulled from the backed up repo  
as part of a cron job.
That cron-repo never had anything in it except what it pulled from  
the backed-up repo and never pulled from anywhere else. Several times  
a week the pull would just hang and have to be manually killed.

Not to mention how dead-dog slow push/pull were on Windows.

We had high hopes for rolling darcs out to a larger internal  
audience, but after 6 months of those problems (Fall '06, Spring '07)  
with little hope of any changes, I've given up. Will probably use  
mercurial (because of the windows support being better than git)  
until darcs has firmed up. The good news is that mercurial 0.9.5 has  
a cherry picking record feature.

I expecte that darcs/git/mercurial will all cross-pollinate features  
and what people will chose to use will have more to do with factors  
such as platform support, guis, and the surrounding eco-system.

Heck, it was a right royal PIA to build darcs for MacOSX since just  
haskell took up a gig to build first, plus oh, 4-6 hours at least.

I still hope darcs wins, but for right now I can't afford to keep  
using it for the reasons stated above.

More information about the darcs-users mailing list