next up previous contents
Next: Theory of patches Up: Darcs 0.9.12 David's advanced Previous: Web interface   Contents

Subsections


The Darcs Patcher

The darcs-patcher E-mail-based server allows you to (easily?) set up a centralized darcs repository to which multiple users can commit patches without giving those users accounts on the server machine. darcs-patcher authentication is performed using gnupg signatures. Users use darcs push --sign to email a signed patch to the repository. darcs-patcher verifies that the patch is signed by an authorized user. It then runs the darcs_test, if available, to make sure the patch doesn't break anything (in which case it would reject it), and applies the patch to the repo.

To use darcs-patcher, you first need to creat a user for its use (one user per repository, I'm afraid). In this user's home directory, create a repository named ``repo''. You have to be a bit careful when creating this repo since if you just run a darcs get on a local repository owned by a different user, darcs will use hard links for the patch files, which may not work since you won't have the right to change them later. This is a bug in darcs get (FIXME).

You next need to set up a gnupg keyring named allowed_keys in the .gnupg/ directory containing the gnupg public keys of all users authorized to commit to the repository. Finally, you create a .forward file containing the single line ``|/usr/sbin/darcs-patcher'' (adjusted for where you actually install darcs-patcher), which tells your mailer to pipe any mail that user receives through darcs-patcher. Note also that darcs itself must reside in the system path.


Creating pushable repositories

A convenient utility called darcs-createrepo is provided to easily set up darcs-patcher-based repositories. This utility creates a new user and sets that user up to recieve and validate patches via email. Because darcs-createrepo must create a new user, it needs to be run as root. It will prompt you for all the information it needs.

darcs-createrepo creates a repo with no users having write privileges. Moreover, the allowed_keys file is created as root-owned, so only root will be able to add allowed users. You probably will want to chown this file to some administrative user. In any case, you'll need to add a few users' gpg keys to this file via gpg's --import or --recv-keys commands.


next up previous contents
Next: Theory of patches Up: Darcs 0.9.12 David's advanced Previous: Web interface   Contents
David Roundy 2003-07-30