Why darcs instead of git?

Tim Matthews picture Tim Matthews · Mar 23, 2010 · Viewed 13.2k times · Source

Using pure functional languages can have a lot of benefits over using impure imperatives, but low level systems languages will generally allow you to achieve much greater performance, especially when they are imperative because it allows you to specify the exact steps in how the cpu should compute the result.

If there is ever list of tools where high performance is an absolute must then I would put VCS at the top of that list, and git achieves this very well. However performance is not git's only advantage over many other other types of version control systems anyway.

The git team is handling the unsafe c code very well, and I never worry about my type system (or any other features of the language it is written in), so why is it that there is a lot of haskell developers that must use darcs when they will only be using the finished product?

Answer

Mark Stosberg picture Mark Stosberg · Jan 12, 2012

Darcs manages collections of patches instead of chronological history. More about this is on the darcs wiki page documenting differences with Git. This difference is illustrated by a darcs ability to pull patches interactively, out of order. For example, you could pull all patches with a commit title that matched a ticket number from from "development" to "testing". Darcs would automatically make sure any other pages these patches depended on were pulled as well. With this key feature, you may need far fewer branches and repos to maintain. While in Git it's very helpful to create a branch before doing work, in Darcs that's often not a concern, as long as long as you give your related commits mention the same ticket number. I used a workflow based on this extensively with a 100,000k LoC project. Besides that technical difference, darcs is very user-friendly. There are fewer commands, and most are interactive by default, prompting you about what to do.

Because of darcs strengths and ease of use, I much prefer it over git, which I also use regularly for open source projects. Darcs is easy enough to use that even if you have to learn git to contribute to some projects, you may still enjoy and benefit from using darcs on other projects where you have a choice.