What is Camp?

Camp (Commute And Merge Patches) is a version control system based on a patch theory similar to that of darcs. This video explains what is unique about camp and darcs — why we prefer them to the other VCSs, and think it is worth spending our time developing them.

Although they are currently separate projects, the camp and darcs projects remain close, and once camp has matured (and in particular, its proofs been completed), we expect them to merge again.


Currently, camp is far from complete, and is not ready to be used. We are working towards a specification of the theory, a formal proof that it is correct, and an open source (BSD license) implementation. Current work is focussed on the correctness proofs.

March 2010
Proof milestone, take 2
May 2009
Proof milestone

The current implementation is available from a darcs repository; run
darcs get camp
to check it out. It is featureful enough to be useful for experimenting with the theory, but not to be usable as a version control system yet.


There is also a darcs2camp program. This is currently non-trivial to build, as you need to link it against some of the darcs object files. Shortly it will be able to use darcs as a library instead, which will make things much easier. To grab the repo run
darcs get

Patch theory docs

The LaTeX source for the paper describing the theory also lives in a darcs repository; run
darcs get
to check it out, or take a look at a snapshot of the PDF. It still needs some restructuring, and not all the proofs are written, but it should give you an idea of the direction in which we are headed. Note that, at the time of writing, you need the trunk version of coqdoc if you want to be able to build the paper out of the box.

Coq proofs

The main focus of camp is currently to formalise the correctness in coq. The proofs are interleaved with the theory docs, in the camp theory repository:
darcs get
although currently the work is being done in other paper-experimental* branches in

Other docs

We also have descriptions of the scheme for generating patch names and the repository format. The implementation doesn't fully implement these yet, though.

Camp is a volunteer effort. If you would like to support it, please consider donating. Thanks!

Ian Lynagh, <>.