vc-darcs

Homepage: https://github.com/velkyel/vc-darcs

Author: Jorgen Schaefer, Juliusz Chroboczek

Updated:

Summary

A VC backend for darcs

Commentary

Darcs is David's Advanced Revision Control System, available at
http://www.darcs.net/

This version of vc-darcs was tested with Emacs 23 and 24.  It might
still work on Emacs 22 with somewhat reduced functionality.

A few ideas for this file are directly taken from vc-svn.el.  Thanks to
Jim Blandy.

To install, put this file into your load-path and add the following to
your .emacs:

(add-to-list 'vc-handled-backends 'DARCS)
(autoload 'vc-darcs-find-file-hook "vc-darcs")
(add-hook 'find-file-hooks 'vc-darcs-find-file-hook)

There are a few reasons why vc is difficult to coerce into using darcs
as a backend.  By default, vc expects files (not trees) to be versioned
as nodes in an AND/OR tree, as is done by RCS and CVS.  Recent version
of vc allow some customisation of that, which allows smooth integration
with e.g. subversion.

Darcs doesn't version files at all; a darcs repository is a collection
of patches, and a particular file version is just the set of patches
that have been applied in order to build it.  While patches might be
reordered when moving between repositories, they usually remain ordered
(notable exceptions to that being unpull and optimize); hence,
a convenient mental shortcut is to identify a version by the latest
patch included in that version.  This is what we do.

Internally, darcs identifies a patch by its hash, which you may obtain
by using changes --xml.  We follow that approach in this code.  However,
as a hash might be difficult to remember at times (it's 65 characters
long), all commands that might take an interactive argument also accept
a regexp identifying a patch name.  See VC-DARCS-REV-TO-HASH.

The fit with vc is still not quite perfect.  A sore point is that vc
doesn't normalise versions; hence, if you have a patch called ``Initial
import'', you might end up with distinct but identical buffers called
vc-darcs.el~Init~, vc-darcs.el~Initial~ and so on.

Dependencies

Reverse dependencies