Nelle prime lezioni abbiamo scelto di tradurre in "etichetta", il termine originale "tag". Questo termine risulta comunque talmente diffuso da essere diventato internazionale.
Si parla di tag riferendosi all'etichetta che si può associare a una revisione del nostro progetto che possiede un significato particolare, ad esempio la prima revisione rilasciata come "alpha".
Certo, potremmo semplicemente annotare il numero della revisione, e – visto che in Subversion tale revisione rimane sempre disponibile – consultarla usando quel numero. Tuttavia si preferisce identificare in maniera più chiara e mnemonica la revisione, associando un nome autoesplicativo. Come altri concetti, anche questo non è una caratteristica esclusiva di Subversion, ma si applica a tutti i sistemi di controllo di versione.
Subversion risolve la questione dei tag in maniera molto semplice, allo stesso modo dei rami: con una copia. Se infatti nella cartella principale del nostro repository, oltre alle cartelle trunk
e branches
creiamo anche una cartella tags
, ecco che la procedura per creare un tag diventa uguale a quella per creare un ramo:
svn copy http://svn.vd-devel/repos/guidasvn/trunk http://svn.vd-devel/repos/guidasvn/tags/alpha-1 -m "creazione versione alpha-1"
Questa comodità diventa ancora più sensata nel caso in cui si desideri etichettare non l'intero repository, ma una specifica sottocartella: copiandola altrove ci risulta più facile identificarla.
Per far sì che questa cartella non sia più modificata in futuro, può essere utile attivare un sistema di controllo degli accessi sul repository (che vedremo più avanti). Comunque non c'è da preoccuparsi, se anche qualcuno dovesse accidentalmente o volontariamente modificare una revisione tag, possiamo annullare i cambiamenti e tornare alla revisione originale.
Altri utilizzi delle revisioni tag
Il comando copy
permette di duplicare non solo le cartelle del repository, ma anche la copia di lavoro locale. Questo è chiaramente diverso da un commit
(che unisce tutte le modifiche locali al repository) o da un export
(un comando aggiuntivo che crea una copia di soli file, quindi priva di informazioni di versione): con tale comando caso vado a creare una copia esatta del contenuto della mia copia di lavoro, qualunque esso sia.
La copia di lavoro locale offre molta flessibilità, e gli utenti avanzati di Subversion la sfruttano. Sulla copia locale possono essere presenti file e modifiche provenienti da diverse revisioni e da diversi repository, nonché modifiche locali. La nostra copia di lavoro può diventare un miscuglio difficile da ricreare, ma perfettamente funzionante, e potremmo anche essere interessati a fissare nel tempo questo preciso stato di cose utilizzando un tag.
svn copy percorso_della_copia_locale URL_repository/tags/tag_personale
Come per i rami, la cancellazione di un tag consiste semplicemente nella cancellazione della cartella associata.