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.
The current implementation is available from a darcs repository;
run
darcs get http://code.haskell.org/camp/devel/src/ 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 http://code.haskell.org/camp/devel/darcs2camp/
The LaTeX source for the paper describing the theory also lives
in a darcs repository; run
darcs get http://code.haskell.org/camp/devel/paper/
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.
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 http://code.haskell.org/camp/devel/paper/
although currently the work is being done in other
paper-experimental* branches in
http://code.haskell.org/camp/devel/.
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, <igloo@earth.li>.