svk, eines per extendre la funcionalitat del Subversion


Les utilitats del svk permeten fer coses molt virgueres com per tenir
varis mirrors locals o fer repositoris descentralitzats.

En un principi les funcions i eines de svk poden pareixer estúpides:
fan el mateix que les de svn i a més a més demanen un repositori de
subversion per poder fer feina. Però és l’ús divertit el que el pot fer
d’una eina molt potent. Per exemple, en la creació de repositoris
desconnectats: directoris amb la mateixa estructura de fitxers i
sistema de control de versions que amb els svn normals, però amb
l’excepció que els commits que facem no aniran al repositori central, sinò
al nostre mirall. Són repositoris descentralitzats en tota regla. D’aquesta
manera, si estem un parell de dies sense connexió podem seguir fent feina
amb les avantatges de tenir control de versions i, en tornar a tenir
connexió, enviar tots els canvis.
No és l’objectiu d’aquest article explicar el funcionament i els
conceptes dels controls de versions ni de Subversion. Però explicaré
algunes de les coses interessants de svk amb un exemple.
La part pràctica del svn; cream el repositori i carreguem la informació
d’un backup anterior. Si volem fer una còpia per poder usar load hem
d’usar dump. Un exemple amb el nostre repositori feina-svn seria:
svnadmin dump /var/feina-svn
(passen els dies, el disc dur
explota i volem recuperar-ho)
mkdir -p /var/feina-svn
svnadmin create feina-svn
svnadmin load feina-svn < /tmp/darrer-backup

En aquests moments tenim un repositori de Subversion completament
funcional a /var/feina-svn. Si sou a la mateixa màquina podeu
fer file:///var/feina-svn. Sinò, amb la transparència de
xarxa feu svn://maquinaremota. Als nostres exemples usaré el
portàtil, que es diu silverymoon.
Passam a fer feina amb el svk mateix. Evidenment recomano consultar el
sistema d’ajuda (svk help, la introducció svk help
intro o el llistat svk help commands). Per crear els
fitxers bàsics de configuració cridam : svk depot -i
(normalment ens demanarà si volem crear el directori .svk/local. Millor
dir-li que si)

compaginam els fitxers del repositori amb els de la configuració del svk
nosaltres usarem el depot //mirror, però podeu posar el nom
que desitgeu svk mirror svn://silverymoon/ //mirror Ara hem
de sincronitzar els repositoris (posar en comú els historials i els
arxius): svk sync //mirror
A partir d’aquest moment ja podriem desconnectar de la xarxa: el nostre
depot de svk (en concret la branca //mirror) acaba de
conseguir també els fitxers propis de la branca que hem sincronitzat (en
el nostre cas tot l’arbre). Per això ja podem seguir endavant amb les
nostres trastades locals.

Farem una branca del //mirror, que anomenarem per exemple
//repositori-svk svk cp //mirror //respositori-svk

Ara tenim el nostre repositori //mirror al dia amb el svn a
continuació fem amb això agafarem el contingut de
//repositori-svk, que és el mateix que a
//mirror svk co //repositori-svk
També podem jugar amb les comandes potents per fer merge: fer la feina
entre dues branques. smerge és la seva versió amb esteroides: fa la
mateixa feina de manera automàtica.
Farem la prova fent una branca del nostre mirror, fent-hi canvis i mirant
com es resolen els problemes.
svk cp //mirror //branca-prova

editam coses d’una branca per l’altra:
svk semerge //repositori-svk //branca-prova
sapigueu que a les opcions del sm també tenim el paràmetre -s, que
sincronitzarà el nostre //mirror abans de fer el merge entre les dues
branques. Així: svk sm -s //mirror //repositori-svk no sols
resoldrà les diferències sinò que també ens posarà al dia (en relació al
nostre repositori svn). Teniu en compte que aquests canvis seran al nostre
//repositori-svk, no als arxius dels que hem fet el checkout inicial. És
per aquest motiu que hem de fer un svk update ~/repositori-svk/
per posar al dia els fitxers on realment fem feina.
Si hem entès el funcionament general de l’invent veurem que podriem haver
fet una cosa com aquesta:

svk depot -i
svk mirror svn://silverymoon/ //mirror
svk cp //mirror //repositori-svk
svk sm -s //mirror //repositori-svk
svk co //repositori-svk

Per si teniu curiositat, ensenyo la sortida d’un du -sh de cada un dels
checkouts i dels repositoris. Heu de tenir en compta que els directori
mirror/ no és del tot necessari si només volem una branca local, com el
directori repositori-svk/

11M /var/feina-svn/
23M feina-svn/
8,8M mirror/
8,8M repositori-svk/
18M .svk/

Si vos demanau per la diferència de pes això esdevé que quan usam svk no
tenim el parelelisme dels directoris .svn que tenim amb els checkouts de
svn.
També tenim una altre manera de fer les coses: sincronitzar el //mirror
amb el nostre repositori (/var/feina-svn) només amb el
HEAD. D’aquesta manera evitam usar molt d’espai. Te evidentment
inconvenients, com per exemple que no tindrem tot el historial del
repositori. Be, el tema seria:

svk sync -s HEAD //mirror

No sempre serà molt gran la ganancia en espai: depen molt del tipus de
canvis que facem als nostres fitxers.

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2265 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.