Hacker News new | past | comments | ask | show | jobs | submit login

What was it? I used darcs quite a bit back when I used to write more haskell, but have lost touch over the last decade or so. What happened? I was always under the impression that one of the things that set darcs apart was that it had a theoretical basis. Did something go wrong with that?



Darcs has the problem of exponential merges[0], where certain merges that would have a lot of conflicts takes an exponential amount of time (based on number of conflicts), which in practice can render certain patchsets unmergable.

The authors of Pijul[1] found a solution for the exponential merge problem, and from what I've heard there have been discussions that darcs might in the future switch to Pijul's algorithm.

[0]: http://darcs.net/FAQ/Performance#is-the-exponential-merge-pr...

[1]: https://pijul.org


The irony here is that all of the large git projects I've worked on don't use merges at all. They cherry-pick and/or rebase their patches around.


Cherry-picks can still lead to conflicts though, no? It's essentially just a particular kind of merge.


My mental model is that cherry-picks are like a copy by-value of one or more patches. A merge is a copy by-reference of a specific series of patches.

It just so happens that what I usually want in practice is to make copies by-value. There are other integration workflows that make copies by-reference with dedicated merge commits. But my team's most common use case for long-lived branches is to track bugfixes for deployment to remote hardware separately from mainline development. So, by-value copies of small changes is much more common.


Yeah, I never merge. No idea why you would want to.


Thanks! Interesting stuff!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: