Darcs és un sistema de control de versions de l'estil de CVS o de Subversion amb la diferència fonamental que no es basa en un repositori central sinó que cada còpia client fa alhora de repositori.
És una fórmula que pot ser útil quan no es pot disposar d'un servidor on tots els participants del projecte hi tinguin accés (cosa que dificultaria un control via sistemes centralitzats).
Una manera de sincronitzar el repositori entre els participants és passar el fitxer patch via correu a la resta de participants.
Per muntar un repositori els passos no són difícils però poden ser un pèl obscurs.
Havent descarregat els binaris i instal·lat correctament, cal obrir el terminal de comandes, ubicar-se dins el directori del projecte i fer:
$ darcs init
que genera una directori _darcs que contindrà tots els fitxers del repositori —substancialment més net que no pas el Subversion—
Caldrà afegir tots el contingut del projecte:
$ darcs add -r *
i fer el primer commit massiu:
$ darcs record -a
Demanarà el nom del patch i si es vol introduïr un comentari complementari i quedarà registrat al repositori.
Nota: Es pot afegir el nom del patch fent: $ darcs record -am “nom del patch“
Per comprovar que s'ha realitzat correctament es pot veure fent:
$ darcs changes
que mostrarà quelcom semblant a:
Wed Jun 28 10:09:42 CEST 2006 autor@mail.com * Nom del patch
Pas delicat: Fer un patch de control que permetrà contrastar els canvis fets.
$ darcs changes --context > $fitxer
On $fitxer serà el nom del patch.
Ara només restarà treballar en el projecte i una vegada fet el record generar el patch a enviar als altres participants del projecte:
$ darcs send -a --context $fitxer -o $fitxerSortida
On $fitxerSortida serà el patch a enviar.
Quan es rep un patch només cal ubicar-lo al repositori i fer:
$ darcs apply $fitxerArribada
On $fitxerArribada serà el nom del patch rebut.
A mesura que es van enviant patch i es van generant sobre l'anterior es van acumulant els canvis cosa que fa creixer desmesuradament el fitxer. Val la pena fer neteja cada cert temps.
Val la pena saber que al fer:
$ darcs whatsnew
Retorna tots els canvis fets que encara no estan al repositori.
Al fer:
$ darcs unrecord
Permet tirar enrrere dins l'històric de versions.
i al fer:
$ darcs revert
Permet tirar enrrere els canvis fets que encara no s'han passat al repositori.
Gràcies a l'Oscar pel descobriment.
Comentaris
Comentat per Francesc Rosàs el 29/06/06
Uff, que complicat no? Quina utilitat pot tenir en comparació d'un repositori centralitzat?
Comentat per are el 29/06/06
De moment, tal i com comento breument al principi del post, ho trobo útil quan no puc disposar d'un servidor central on tots els desenvolupadors hi puguin accedir regularment.
Comentat per *e* el 29/06/06
Una cosa que m'ha agradar és que pots fer que només accepti un "commit" quan els test son satisfactoris, altrament no l'accepta :)
Comentat per suy el 29/06/06
Ehem, fer que només s'accepti un commit si es compleix una condició, es pot fer fins i tot amb el vell CVS, i per descomptat, amb Subversion, i suposo que qualsevol altre. :)
Comentat per *e* el 30/06/06
doncs mai m'havia posat a mirar-ho per a CVs o SVN, potser si que ho tenen directament, però no ho havía vist.... :)