Anar a: Buscar
FIB > Laboratori de Càlcul > Serveis > Subversion > Conceptes Castellano | English


Descripció
Conceptes
Client de text
Ús sota Eclipse
Accés via web
Compartir el repositori
Preguntes freqüents



Subversion

Última modificació: 06-10-2006

Conceptes de Subversion

Repositori (repository)

És el magatzem on es guarden tots els fitxers i les seves versions. Totes les operacions situen el punt de referència en el repositori: per exemple, si fem un check-out, vol dir extreure un fitxer del repositori, mentre que si diem commit volem dir incorporar un fitxer dins del repositori.

Còpia de treball (working copy)

Inicialment és el directori que s'obté al fer un check-out d'un projecte emmagatzemat en un repositori. El working copy conté informació per què Subversion pugui saber quins fitxers estan sincronitzats i quins no. És el directori on després de fer check-out editarem els nostres fitxers i els anirem incorporant al repositori. Un "working copy" també conté fitxers extres que ajuden a mantenir la sincronia amb el repositori i faciliten la implementació de les comandes. Aquests fitxers d'administració es troben sota la carpeta .svn, i no s'han d'esborrar.

Directori per inicialitzar el repositori

És el directori que conté els fitxers de la pràctica o projecte que volem posar sota control de revisions. Si executem la comanda svn import, subversion incorporarà tots els fitxers dins del repositori. IMPORTANT: Un cop ha acabat l'import, aquest directori no es converteix en un working copy, per tant, per seguir treballant amb els fitxers que contenia aquest directori, necessitarem executar svn checkout per obtenir un working copy net, per a més seguretat en un nou directori. En aquests moments, podrem començar a modificar el codi de la nostra pràctica que hi ha en el directori on s'ha fet el check-out. El directori que hem usat per inicialitzar el repositori es pot esborrar.

Sincronització

És la clau per portar el control de versions. És l'objectiu que hem d'aconseguir en tot moment: tenir un repositori i un working copy en sincronia. Si partim d'un working copy sincronitzat, ens poden passar dues coses:

    1. El working copy s'ha modificat i ha quedat desincronitzat respecte el repositori.
    2. El repositori ha estat actualitzat per una altre membre del grup de treball, en el cas de que hi hagi un grup de programadors, i el repositori ha quedat desincronitzat respecte el working copy.

Per aconseguir la sincronia en cadascuna de les dues situacions anteriors caldrà fer:

    1.svn commit, per actualizar el repositori.
    2.svn update per descarregar-nos els canvis al nostre working copy.

Cicle habitual de treball

Podem veure el cicle de treball habitual en el següent gràfic que explicarem a continuació:

  • Estat 1

    No existeix ni un repositori ni un working copy. En aquest moment, podem executar la comanda svn create per crear un repositori.

      svn create

  • Estat 2

    Disposem d'un repositori, però està buit. Amb la comanda

      svn import

    carreguem el repositori amb els fitxers del directori.

  • Estat 3

    Disposem d'un repositori amb dades, però encara no podem fer modificacions als seus fitxers. Cal crear el "working copy":

      svn checkout

  • Estat 4

    El repositori conté dades i existeix un "working copy" sincronitzat. Ara podem fer modificacions al nostre "working copy":

    • Modifiquem fitxers amb un editor de text, o
    • Afegim, esborrem, copiem o renombrem fitxers:

      • svn add
      • svn delete
      • svn copy
      • svn move

  • Estat 5

    Tenim un working modificat respecte el repositori. Ara necessitem guardar els canvis al repositori:

      svn commit

    Amb aquesta operació tornem a l'estat 4.

  • Estat 6

    Es pot arribar a aquest estat quan es treballa en grup sobre un repositori, i algú altre l'ha modificat. En aquest cas, haurem d'incorporar aquests canvis al nostre "working copy". Executarem la comanda:

      svn update.

    Amb aquesta operació tornem a l'estat 4.

En quasevol moment del desenvolupament podem consultar les diferències entre el repositori i el nostre "working copy". Això ho podem fer amb les comanda: svn list, svn status, svn diff.

Quan es treballa amb repositoris, se sol utilitzar una estructura formada per tres subdirectoris: trunk, branches i tags:

  • Trunk:

    És el directori que conté l'última versió del projecte que s'està desenvolupant, la versió comuna a tots els desenvolupadors.

  • Branches

    Aquest directori conté varis subdirectoris, un per cada versió de "Trunk" que es vulgui fer. És normal que cada desenvolupador treballi sobre el seu propi subdirectori a "Branches", i que després posi tot en comú amb el directori "Trunk" amb la comanda svn merge. Cada subdirectori de "Branches" normalment s'inicialitzarà fent svn copy de "Trunk" al subdirectori.

  • Tags

    A "Tags" es guarden copies de seguretat (snapshots) del projecte, executant la comanda svn copy. L'única diferència entre els directoris "Tag" i "Branch" és que mai no es modifiquen fitxers pertanyents al directori "Tags".


versió per imprimir