Què és subversion (svn)?
Subversion és un programa que permet la gestió i el control de les modificacions que es realitzen en un conjunt de fitxers i documents. Aquest documents poden ser, de text o binaris. Però, val a dir, que els documents de text son els millors per a treballar-hi. La tasca de subversion és de fer d'assistent del canvis efectuats i portar un control sobre qui ho ha fet, quan i què.
Per què fer servir subversion o un altre programa gestor de versions?
La realització de l'edició d'un document, ja sigui una pagina web o un programa d'ordinador es va realitzant durant un període de temps: mentre es va construint el propi document aquest evoluciona. Per portar un control dels canvis que s'han anat efectuant no hi ha moltes alternatives possibles. Es pot anar guardant una còpia de cada versió del nostre treball, però això és un malbaratament de recursos d'espai. També es podria anar sempre guardant per una banda l'última versió del nostre document, i per l'altre, les diferències entre l'última versió i les anteriors, però aquesta és una alternativa costosa. També es pot decidir no portar cap control de les versions anteriors, cosa que pot ser factible per determinats treballs.
La utilitat de l'eina radica en portar un control dels canvis fets. Això resulta molt pràctic quan es treballa en grup i s'han de coordinar diverses persones sobre els mateixos fitxers. També pot ser molt útil en un treball individual, on es vol tenir un historial sobre els canvis efectuats.
Metodologia
La metodologia per treballar amb un programa de gestió de versions com subversion és una mica diferent a l'habitual. En primer lloc cal considerar que per un costat hi ha el repositori, que és una base de dades on el programa subversion emmagatzema la informació necessària, i per l'altre, hi ha el directori de treball, que és una còpia de la informació emmagatzemada al repositori. Val a dir, que al repositori, la informació no està guardada com s'ha introduït, sinó que està en forma de base de dades binaria que el programa svn (l'executable del subversion) consulta i modifica.
Passos a seguir per crear el primer repositori. Per fer-ho utilitzem línia de comandes. No és la única manera de poder fer les coses. S'obre un terminal i en qualsevol directori on es pugui escriure (per exemple el nostre directori personal)
svnadmin create repos
aquesta comanda crearà un repositori en el directori repos. Ara, cal fer una còpia de treball:
svn checkout file:///home/users/nomusuari/repos prova-wrk
aquesta ordre realitzarà una còpia de treball del repositori situat a:
/home/alumnes/nomusuari/repos
i el crearà a prova-wrk.
Un cop creada la còpia de treball, cal anar al directori on s'ha creat:
cd prova-wrk
a partir d'aquell directori, es pot començar a treballar amb el repositori. Aquest directori és igual a qualsevol altre, però quan s'han de fer canvis sobre el directori, cal utilitzar determinades ordres.
El cicle de treball
El típic cicle de treball consisteix en:
1) Actualitzar la còpia de treball.
svn update
això fa que es sincronitzi la còpia de treball amb el repositori. Si s'acaba de començar, o es treballa en amb una única copia de treball, no cal realitzar aquest pas.
2) Realitzar canvis.
Els fitxer que ja estiguin al repositori es modifiquen amb l'editor corresponent. Però per determinades coses s'han de fer servir les següent comandes:
svn add nom
afegeix el fitxer o el directori (i tot el seu contingut) per poder ser introduït al repositori. Si es té un fitxer en un altre directori, per afegir-lo, es copia a aquest de forma habitual i després s'afegeix amb el svn add.
svn del nom
esborra el fitxer o el directori (i tot el seu contingut).
svn copy nomorigen nomdesti
copia el fitxer( o directori) guardant l'historial d'aquest.
svn move nomorigen nomdesti
copia el fitxer( o directori) guardant l'historial d'aquest. És el mateix que un svn copy nomorigen nomdesti; svn del nomorigen.
3) Actualitzar el repositori.
svn commit
Aquesta ordre obrirà un editor de text on es podrà introduir un missatge explicatiu dels canvis fets.
Conflictes
svn update serveix per sincronitzar el nostre directori de treball amb el repositori. Val a dir que aquest pas es podria estalviar si l'usuari és únic, però, en un treball compartit és fonamental, ja que si no el programa donaria error si s'intenta afegir canvis a un repositori no actualitzat. En el cas d'intentar fer un \svn update i surtin conflictes, pot passar:
svn update U Install G Readme C Bar.txt Updated to revision 46.
Això vol dir el següent: (U) el fitxer Install, s'ha actualitzat, però en no haver canvis a la còpia local no hi ha conflicte; (G) el fitxer Readme s'ha actualitzat, hi ha canvis al fitxer local, però la fusió s'ha pogut realitzar, ja que no es superposaven els canvis; per últim (C), els canvis es sobreposen als fets a la còpia local i hi ha un conflicte que s'ha de resoldre a mà.
Consideracions finals
Hi ha vàries formes d'adreçar-se a un repositori. Les més habituals son:
svn checkout svn+ssh://login@nom_de_maquina/lloc/onestaelrepo nom_de_la_carpeta_copia_de_treball
on login és el vostre nom d'usuari i nom_de_la_carpeta_copia_de_treball on voleu crear la còpia de treball del repositori. Us demanarà la vostre paraula de pas. Aquesta forma es fa servir per utilitzar repositoris remots.
svn checkout file:///home/users/nomusuari/repos prova-wrk
per fer servir repositoris que estiguin dintre de la mateixa màquina.
Fonts d'informació
- [http://www.sindominio.net/article.php3?id_article=32 Tutorial de referencia ]
- [http://www.red-bean.com/sussman/svn-anti-fud.html Dispelling Subversion FUD] by Ben Collins-Sussman (Subversion developer), as of 2004-12-21
- [http://subversion.apache.org/ Official website]
- [http://subversion.tigris.org/ Previous official site] Not all content has yet been migrated to the new official site.
- [http://svnbook.red-bean.com/ Version Control with Subversion], an O'Reilly? book available for free online
Tips
Changing a Subversion repository root / URL
What do you do if your Subversion server URL or repository location changes and you want to update a checked out copy on your client? The solution is the magic command svn switch --relocate.
1. Change to the top directory of your checked out client. 2. Run svn info and verify the Repository Root is now the wrong place. The URL will be wrong too. 3. Run svn switch --relocate oldRoot newRoot. oldRoot will be whatever svn info told you it was; newRoot is, well, the new root. 4. Run svn info to verify the Repository Root is correct.
svn switch also has something to do with branches. But in this case we're not managing a branch, just switching the Subversion repository address. Useful for server migrations, hostname renames, and protocol switches.
(* copied from http://www.somebits.com/weblog/tech/subversion-relocate.html)
Activating an external link
First edit a file with the name props and write there this:
name_of_the_folder link_to_the_external_repo
per ex.
libieee1284pp svn+ssh://ris.upc.es/svnroot/hardlab/libieee1284pp
and then execute:
svn propset svn:externals --file props .
pay attention in the final dot. It indicates the current directory.