a.css

esbudellant estàndards


Darcs: control de versions distribuït

29/06/06

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

  1. Comentat per Francesc Rosàs el 29/06/06

    Uff, que complicat no? Quina utilitat pot tenir en comparació d'un repositori centralitzat?

  2. 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.

  3. 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 :)

  4. 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. :)

  5. 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.... :)

Afegir un comentari


© Arnau Siches. a.css està sota Llicència Creative Commons.