Adoro contraddirmi: avevo promesso che quest’articolo avrebbe riguardato CVS e invece oggi parliamo di Subversion.
Ciò è dovuto alla scelta di ArabianFenix riguardo il nuovo progetto PhpAjax-Fusion: useremo Subversion invece che CVS. Non posso che approvare tale scelta.
Ma cominciamo a metterla sul tecnico!
Adoro contraddirmi: avevo promesso che quest’articolo avrebbe riguardato CVS e invece oggi parliamo di Subversion.
Ciò è dovuto alla scelta di ArabianFenix riguardo il nuovo progetto PhpAjax-Fusion: useremo Subversion invece che CVS. Non posso che approvare tale scelta.
Ma cominciamo a metterla sul tecnico!
Per fare pratica servono gli strumenti, i “tool”. Poiché l’ambiente è client-server, alcuni tool andranno sul server, altri sul client.
Siccome nei libri salto sempre i capitoli su installazione e configurazione, per quanto riguarda il server, ho scelto di usare la distribuzione live Buildix (basata su Knoppix) il cui scopo è ottenere velocemente un ambiente di sviluppo che consenta l’utilizzo di vari software, uno fra i quali è Subversion.
Buildix fornisce un repository già configurato e contenente una versione di “Commons-Math”, una libreria Java per il calcolo matematico avanzato.
Scaricate quindi la ISO o l’immagine WMWare (sono 400 mega circa, con una adsl ve la cavate con poco) e avviatela (con l’ultima versione di qemu su linux ho dei problemi di rete, per questo ho usato una macchina a parte).
Per quanto riguarda il client, dovete ovviamente installare Subversion.
Checkout
Nel precedente articolo vi ho parlato del repository e del fatto che ogni utente ne ha una copia locale, dove effettua le modifiche.
Il comando per ottenere la copia locale è “checkout”.
Aprite il vostro terminale di fiducia e digitate
svn checkout http://«INDIRIZZO IP SERVER»/svn/sample/
Al termine dell’esecuzione comparirà la scritta
Estratta revisione 16.
e avrete una nuova cartella: “sample”.
Status/Diff/Commit
Proviamo subito a modificare il contenuto del repository. Eseguite il comando
cd sample/trunk/math/
quindi editate il file NOTICE.txt.
Aggiungiamo una riga al file in modo che diventi qualcosa tipo
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
And modified by
ME
Quindi lanciamo il comando
svn status
Subversion ci dirà che il file NOTICE.txt è stato modificato (“M”) rispetto alla versione memorizzata nel repository.
Per sapere quali modifiche sono state apportate al file digitiamo
svn diff NOTICE.txt
Con la tipica sintassi del comando “diff”, le righe aggiunte verrano segnalate con un “+”
Index: NOTICE.txt
===================================================================
— NOTICE.txt (revisione 16)
+++ NOTICE.txt (copia locale)
@@ -1,2 +1,4 @@
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
+And modified by
+ME
Le modifiche vanno bene, è ora di metterle nel repository.
svn commit NOTICE.txt –message ‘Piccola modifica’
E’ molto probabile che ora Subversion vi chieda una password. Purtroppo non tutta la parte di configurazione può essere evitata. Aprite il browser all’indirizzo
http://«INDIRIZZO IP SERVER»/showUsers?htfile=%2Fetc%2Fapache2%2Fdav_svn.passwd
premete “submit” e digitate lo username di cui Subversion vi ha chiesto la password (nel mio caso è “federico”) e relativa password a scelta. Premete “submit”.
Tornate al terminale e digitate la vostra password. Se non ci sono stati intoppi nel mezzo, dovreste vedere questo messaggio
Trasmetto NOTICE.txt
Trasmissione dati .
Commit della Revisione 17 eseguito.
Questo messaggio è importante perchè ci fa capire che Subversion da un numero di versione non ai singoli file (come invece fa CVS) ma all’intero repository e per ogni singola modifica che inviate.
Controlliamo il nostro file
svn log NOTICE.txt
Subversion ci elenca tutte le modifiche apportate a quel file, inclusa la nostra.
Add/Commit/Move/Commit
Proviamo ora ad aggiungere un nuovo file. Creiamo un nuovo file dal significativo nome “pippo.txt” e aggiungiamolo al repository con
svn add pippo.txt
Anche in questo caso, le modifiche sono ancora solo nostre: il repository e i nostri colleghi ancora non ne sanno nulla. Per metterli al corrente dei cambiamenti, procediamo con un commit
svn commit pippo.txt –message ‘un amico di topolino’
Il commit è un comando fondamentale perchè è quello che rende permanenti le nostre modifiche, qualunque esse siano.
Ora però ci accorgiamo di aver sbagliato: non volevamo creare il file pippo.txt ma pluto.txt.
svn rename pippo.txt pluto.txt
E quindi
svn commit –message ‘il cane di topolino’
Update
Poiché anche i nostri colleghi stanno lavorando allo stesso progetto, dobbiamo portare tutti i loro aggiornamenti nel nostro repository locale. Lo facciamo con
svn update
Nel nostro caso, lanciare questo comando non comporterà modifiche, ma ci fornirà una informazione utile
Alla revisione 22.
Se siete stati più bravi di me, dovreste essere alla 18: io ho combinato qualche disastro nel frattempo :)
Con questo si conclude questo articolo. Rimango a vostra disposizione per chiarimenti. Il forum e Google sono vostri amici.
Ciao!





