Abbiamo visto che nella nostra copia di lavoro esistono cartelle "speciali" che contengono le informazioni di versione. Grazie a questa localizzazione delle informazioni, gli altri file non hanno invece nulla di speciale e possono essere quindi modificati con qualsiasi strumento.
Quindi, se stiamo parlando di codice o documentazione, possiamo aprire il file con il nostro editor preferito e lavorare normalmente – ad esempio, per questa guida, si sono utilizzati OpenOffice e NotePad. Possiamo modificare l'HTML usando DreamWeaver, e per le immagini usare Photoshop o Gimp: il lavoro sui file non cambia rispetto a quando non si utilizzava SubVersion.
Il client SVN infatti entra in gioco solo nel momento in cui tentiamo di caricare le modifiche con un comando commit
. È confrontando i file della copia di lavoro, con la copia "originale" presente nelle cartelle nascoste, che il client SVN è in grado di determinare quali file avete cambiato e quindi quali modifiche sono da caricare sul server.
Cambia invece, e dobbiamo tenerlo ben presente, la modalità di ridenominazione, spostamento, cancellazione e aggiunta di file e cartelle. Per tutte queste operazioni, al posto dei classici comandi del filesystem, dovremo usare gli appositi comandi SVN:
svn add
svn delete
svn copy
svn move
Subversion infatti, a differenza di CVS, è in grado di tenere traccia storica di questo genere di modifiche, ma non può farlo automaticamente. Supponiamo infatti di spostare un file in una diversa cartella della nostra copia di lavoro senza usare il comando apposito, ma semplicemente trascinando il file con il mouse. Al momento del commit, il client SVN si accorge che c'è un file in meno nella prima cartella e un file in più nella seconda cartella. Come può sapere se si tratta dello stesso file, o invece se il primo file sia stato cancellato e questo sia un nuovo file?
Se invece usiamo il comando move, lo spostamento del file verrà registrato come modifica e trasmesso al repository, con due evidenti vantaggi:
- il file porterà con sè lo storico delle proprie modifiche anche nella nuova posizione;
- lo spostamento, come qualunque modifica, potrà essere annullato semplicemente ritornando a una revisione precedente.
Caricamento delle modifiche
Il comando vero e proprio per caricare le modifiche è:
svn commit --message "Messaggio di log" /local/path
Come al solito, se non si specifica il percorso verrà applicato alla cartella corrente. Tale cartella può anche essere solo una sottocartella del progetto, non è necessario caricare sempre l'intero albero. È obbligatorio tuttavia specificare un messaggio di commit
, tipicamente usato per descrivere il tipo di modifiche apportate.
È arrivato il momento di provare a caricare le modifiche alla guida effettuate dopo il primo checkout. Clicchiamo con il tasto destro sulla cartella di lavoro locale e selezioniamo l'opzione SVN Commit
. Ci viene mostrato l'elenco delle modifiche da apportare, con la possibilità di caricarne solo alcune. Lasciamo tutto com'è e procediamo.
Appare il solito elenco delle operazioni effettuate (in questo caso vengono caricati gli ultimi file modificati), e infine il messaggio che indica che siamo arrivati alla revisione 2.