Première rédaction de cet article le 9 juin 2009
darcs est un excellent VCS décentralisé. Il est par exemple utilisé pour gérer les fichiers de ce blog. Permet-il de travailler sur plusieurs machines sans qu'aucun des dépôts ne soit connecté en permanence ? Oui, en échangeant des patches par courrier, patches qu'on applique ensuite localement.
D'abord, il faut demander à darcs de
produire un patch. On peut utiliser pour cela la
fonction shell darcsdiff
, que présentait mon article sur les fonctions shell.
darscdiff
prend comme argument l'ID du
dernier message du dépôt qui est en retard de
synchronisation. (Ou, dit autrement, l'ID immédiatement
précédent celui à partir duquel on veut envoyer
les patches.) Si on prend un ID trop lointain dans
le passé, ce n'est pas très grave (le message sera simplement trop
gros), darcs n'appliquera que les patches nouveaux.
Donc, par exemple :
% darcsdiff 'Manque de scalabilite du Wifi' What is the target email address? stephane+darcs@bortzmeyer.org Successfully sent patch bundle to: stephane+darcs@bortzmeyer.org.
(Attention, par défaut, darcsdiff
envoie tout le
dépôt s'il ne trouve pas l'ID donc lisez bien les avertissements avant
de taper sur la touche Entrée.)
Et le destinataire reçoit un message du genre :
Subject: darcs patch: Article NetBSD format fini (and 26 more) From: bortzmeyer@batilda.nic.fr To: stephane+darcs@bortzmeyer.org Date: Tue, 9 Jun 2009 09:04:00 +0200 (CEST) X-Mail-Originator: Darcs Version Control System X-Darcs-Version: 2.0.2 (release) DarcsURL: CONTEXT [-- Attachment #1 --] [-- Type: text/plain, Encoding: quoted-printable, Size: 2.4K --] Wed Jun 3 11:37:53 CEST 2009 stephane@ludwigVII.sources.org * Article NetBSD format fini Wed Jun 3 13:25:43 CEST 2009 stephane@ludwigVII.sources.org * TODO: strlen et l'optimisation ...
Il doit alors sauvegarder le message (par défaut, l'attachement porte comme nom l'ID du premier patch qui était manquant) puis demander à darcs d'appliquer ces patches (il peut y en avoir plusieurs, comme dans l'exemple ci-dessus) :
% darcs apply article-netbsd-format-fini.dpatch
Si on le fait deux fois, par erreur :
% darcs apply article-netbsd-format-fini.dpatch All these patches have already been applied. Nothing to do.
On trouve de nombreux détails, notamment l'intégration avec mutt dans la documentation de darcs.
(Les utilisateurs de git peuvent sans doute
faire à peu près pareil avec git bundle create
/tmp/project.gitbundle HEAD
, puis en envoyant le
/tmp/project.gitbundle
par courrier.)
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)