![]() |
| Home | Chi sono | Mappa del sito | Contatti |
|
Archivio->Installare Subversion
Installare e configurare SubversionQuesto piccolo tutorial spiega come installare e configurare Subversion 1.0.6 nel sistema operativo FREE BSD 8.0 e successive versioni.1) Installare Apache 2.2 (vedere Installare Apache 2.2+SSL/PHP 5/MySQL 5.1) Nella configurazione dell'installazione, assicuratevi di selezionate l'opzione 'BDB' che abilita il database Berkeley DB e l'opzione 'MOD_DAV'. 2) Spostatevi sulla directory del port di Subversion ed avviate la configurazione dell'installazione: # cd /usr/ports/devel/subversion
Assicuratevi di selezionate l'opzione 'MOD_DAV_SVN' che abilita WebDav.
3) Se in fase di start up di Apache 2.2 viene restituito il warning: [warn] module dav_module is already loaded, skipping
Allora dovete aprire il file /usr/local/etc/apache22/httpd.conf e assicurarvi che il modulo web_dav venga caricato una sola volta (commentare il secondo caricamento). Di seguito la posizione del modulo commentato: #LoadModule dav_module libexec/apache22/mod_dav.so
4) Indichiamo con <directory svn> la directory di root di svn (ad esempio /usr/local/repo). Se non esiste occorre crearla: # mkdir <directory svn>
e cambiamo l'utente con l'utente Apache # chown -R www:www <directory svn>
5) Creaiamo il file delle password per subversion (nell'esempio inseriamo il primo utente) # mkdir /etc/subversion
6) Creiamo il file di configurazione /usr/local/etc/apache22/extra/httpd-dav_svn.conf ed inseriamo il seguente codice: 7) Quindi inseriamo nel file /usr/local/etc/apache22/httpd.conf, l'inclusione alla configurazione supplementare Include etc/apache22/extra/httpd-dav_svn.conf
Ora riavviare apache: # /usr/local/etc/rc.d/apache22 restart
Gestire un progetto subversionPer creare un progetto eseguire i seguenti comandi sulla macchina server# cd /usr/local/repo/
Dovremmo poter vedere il progetto all'indirizzo: http://<nome_host>/repos/<nome_progetto> Su una macchina client è possibile importare il progetto (solo la prima volta). Se non esiste ne possiamo creare uno nuovo:
Ed adesso lo importiamo con il comando (francesco è l'utente inserito prima) # svn import <nome_progetto> http://francesco@<nome_host>/repos/<nome_progetto> -m "importazione iniziale"
A questo punto possiamo eliminare la directory, in quanto essendo il progetto in repository possiamo recuperarlo con il CheckOut. # rm -rf <nome_progetto>
SVN client - i comandi più usatiSulla macchina client possiamo eseguire il CheckOut del progetto# svn checkout http://francesco@<nome_host>/repos/<nome_progetto> <nome_progetto>
Entriamo nel trunk del progetto, e proviamo a visualizzare le informazioni del progetto. Dovremmo poter vedere dati quali l'indirizzo URL del progetto, il repository, il numero dell'ultima revisione, autore e data dell'ultima modifica.
Proviamo a creare un file nel trunk # echo "test" > test.txt
Se proviamo a visualizzare lo stato del progetto # svn status
notiamo che il file viene segnalato come file non in repository ? test.txt
Proviamo ora ad aggiungere il file appena creato nel repository con il seguente comando # svn add test.txt
notiamo che adesso, con il comando per la visualizzazione dello stato del progetto, il file viene segnalato come aggiunto in repository ma non ancora committato A test.txt
Possiamo eseguire il commit del file con il comando # svn ci test.txt -m "file di test"
o equivalentemente eseguire il commit di tutti i file del progetto (saranno committati solo quelli aggiunti, modificati o eliminati) # svn ci -m "file di test"
Proviamo ora ad modificare il file ed a visualizzare lo stato del file M test.txt
Possiamo quindi committare la modifica del file # svn ci -m "file test modificato"
Proviamo ad eliminare il file dal repository # svn rm test.txt
Il file viene fisicamente rimosso dalla macchina client ma non dal server. Lo stato del progetto segnala questo file come eliminato D test.txt
Come per le altre operazioni viste fino ad ora, per rendere effettiva l'eliminazione occorre eseguire il commit. # svn ci -m "file test eliminato"
Dalle altre macchine client, per tenere il progetto aggiornato (rispetto alle modifiche committate dalle altre macchine), si usa il seguente comando # svn update
SVN client - gestire le versioniL'uso delle directory branches, tags e trunk non è una regola ma una buona consuetudine. Il progetto in fase di sviluppo si trova su trunk. Ad ogni rilascio avviene una copia in (branches) e in (tags). La directory branches contiene tutte le versioni che vengono rilasciate. Quando su una versione (cioè su branches) si scoprono dei bachi, successivamente alla correzione dei bachi, si crea una sotto-versione stabile apposita su tags.Questa metodologia consente di avere separati: il progetto in fase di sviluppo (trunk), le versioni rilasciate (branches). Infine, per ogni versione, tutte le sotto-versioni (tags). Ecco un esempio di rilascio di un progetto (test), sul server test.test.it alla versione 1.4.1
Se alla versione 1.4.1 si scoprono dei bachi, si modifica la versione 1.4.x in branches, quindi successivamente si crea un nuovo tag
Poichè le modifiche sono avvenute in branches, occorre fonderle con trunk. Quindi ricavare tutte le operazioni eseguite sul branches 1.4.x con il comando
Occorre calcolare il numero in cui e' stata fatta l'ultima sincronizzazione. Supponiamo di aver fissato un bug nel branches 1.4.x e la revisione era alla 10 e di aver committato (perciò la versione di svn e' passata da 9 a 10). con il comando seguente, eseguito nella cartella dove e' presente il TRUNK da aggiornare. Entrare nella directory di trunk, ed eseguire il comando di merge:
SVN client - risolvere i conflittiA seguito di un aggiornamento (svn update) o di un merge, è possibile che ci siano dei file con modifiche sovrapposte ovvero dei conflitti. Se ad esempio il file 'test.java' contiene dei conflitti, svn crea 3 file: test.java.mine (versione presente nella copia di lavoro prima dell'update), test.java.rOLD (versione precedente alle modifiche della copia di lavoro) e test.java.rNEW (versione attualmente presente sul server). In oltre nel file 'test.java' vengono aggiunti dei marcatori
Se proviamo a visualizzare lo stato del file (svn status), vedremo C test.java
Dopo aver modificato il file, è possibile segnalare a subversion che il conflitto è stato risolto # svn resolved test.java
Successivamente sarà possibile committare le modifiche apportate. Un altro comando importante è la possibilità di ripristinare il file allo stato iniziale (prima di eventuali modifiche locali). # svn revert test.java
Se eseguito su un file con dei conflitti, il risultato sarà di annullare le modifiche eseguite in locale ed accettare gli aggiornamenti del server. Ovviamente non è necessario eseguire un commit poiché non ci sono modifiche al file rispetto alla versione del server. Infine mediante il comando (svn diff) possiamo visualizzare le differenze tra i file della versione locale e file della versione del server. svn diff
oppure svn diff test.java
|