Il controllo della versione è l'arte della gestione dell'evolversi delle informazioni. È stato a lungo uno strumento critico per i programmatori, che spendono il loro tempo apportando piccole modifiche al software per poi cancellarle il giorno seguente. Ma l'utilità del software per il controllo della versione va oltre il mondo dello sviluppo di programmi. Ovunque si incontrino persone che utilizzino il computer per gestire informazioni in continuo cambiamento c'è posto per il controllo della versione.
Subversion è un software open source per il controllo della versione. Utilizzando Subversion è possibile registrare la storia del codice sorgente e dei documenti. È in grado di gestire l'evolversi di file e directory nel tempo. Nel repository centrale viene posizionato un albero di tutti i file. Il repository è come un server di file, tranne per il fatto che si ricorda qualsiasi cambiamento apportato.
Per accedere al repository di Subversion utilizzando il protocollo HTTP, è necessario installare e configurare un server web. Apache2 funziona molto bene con Subversion. Fare riferimento alla sottosezione HTTP nella sezione Apache2 per installare e configurare un certificato digitale.
Per installare Subversion, in un terminale, digitare:
sudo apt-get install subversion libapache2-svn
I passi seguenti presumono siano stati installati i pacchetti elencati precedentemente. Questa sezione descrive come creare un repository con Subversion e accedere al progetto.
È possibile accedere ai repository di Subversion in molti modi, dal disco locale o attraverso diversi protocolli di rete. La posizione di un repository è comunque sempre un URL. La tabella seguente descrive come i diversi schemi URL corrispondano ai metodi di accesso disponibili.
Tabella 4.1. Metodi di accesso
Schema |
Metodo di accesso |
---|---|
file:// |
Accesso diretto al repository (sul disco locale) |
http:// |
Accesso attraverso il protocollo WebDAV al server web Apache2 di Subversion |
https:// |
Come http://, ma con cifratura SSL |
svn:// |
Accesso attraverso un protocollo personalizzato a un server svnserve |
svn+ssh:// |
Come svn://, ma attraverso un tunnel SSH |
In questa sezione viene descritto come configurare Subversion per tutti questi metodi. Saranno descritte solo gli elementi basilari. Per maggiori dettagli, fare riferimento al libro di svn.
Questo è il metodo di accesso più semplice. Non necessita di alcun server di Subversion in esecuzione. Questo metodo serve per accedere a Subversione dalla stessa macchina in cui è in esecuzione. La sintassi del comando è la seguente:
svn co file:///percorso/del/repository/progetto
o
svn co file://localhost/percorso/del/repository/progetto
![]() |
|
Se non viene specificato l'host, è necessario utilizzare tre slash (///), due per il protocollo (in questo caso file) e uno è lo slash iniziale del percorso. Se viene specificato l'host, utilizzare due slash (//). |
I permessi di accesso al repository dipendono dai permessi impostati nel file system. Se l'utente possiede i permessi di scrittura e lettura, allora potrà eseguire checkout e commit al repository.
Per accedere la repository di Subversion utilizzando il protocollo WebDAV, è necessario configurare il server web Apache2. Aggiungere quanto segue al file /etc/apache2/apache2.conf
:
<Location /svn> DAV svn SVNPath /path/to/repos AuthType Basic AuthName "Your repository name" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
È quindi necessario creare il file /etc/subversion/passwd
. Questo file contiene le informazioni per l'autenticazione dell'utente. Per aggiungere una voce, per aggiungere un utente, è possibile utilizzare il seguente comando:
htpasswd2 /etc/subversion/passwd user_name
Verrà richiesta la password. Una volta inerita, l'utente viene aggiunto al file. Ora, per accedere al repository, digitare:
svn co http://servername/svn
![]() |
|
La password viene trasmessa come testo in chiaro. Per evitare attacchi di tipo password snooping, è necessario utilizzare la cifratura SSL. Per maggiori informazioni fare riferimento alla sezione seguente. |
L'accesso al repository di Subversion attraverso il protocollo WebDAV con cifratura SSL (https://) è simile a http:// tranne per il fatto che è necessario installare e configurare un certificato digitale per il server Apache2.
È possibile installare un certificato digitale emesso da un'autorità di certificazione come Verisign. In alternativa è possibile installare i propri certificati auto-firmati.
I passi seguenti hanno come presupposto l'installazione di un certificato digitale all'interno del server web Apache2. Ora, per accedere a un repository Subversion, fare riferimento alla sezione precedente. I metodi di accesso sono esattamente gli stessi, tranne il protocollo. È necessario utilizzare https:// per accedere al repository.
Una volta creato il repository è possibile configurare il controllo degli accessi modificando il file /path/to/repos/project/conf/svnserve.conf
. Per esempio, per impostare l'autenticazione, togliere i commenti alle seguenti righe presenti nel file di configurazione:
# [general] # password-db = passwd
Dopo aver tolto i commenti alle righe precedenti, è possibile gestire la lista degli utenti nel file passwd. Modificare il file passwd
presente nella directory e inserire il nuovo utente. La sintassi da usare è la seguente:
username = password
Per maggiori informazioni fare riferimento al file.
Per accedere a Subversion attraverso il protocollo svn://, sia dalla stessa macchina sia da un'altra macchina, avviare svnserver utilizzando il comando svnserve. La sintassi è la seguente:
$ svnserve -d --foreground -r /path/al/repository # -d -- daemon mode # --foreground -- run in foreground (useful for debugging) # -r -- root of directory to serve Per ulteriori dettagli sull'utilizzo fare riferimento a: $ svnserve --help
Una volta eseguito questo comando, Subversion si mette in ascolto sulla porta predefinita (3690). Per accedere al repository del progetto, è necessario eseguire, da un terminale, il seguente comando:
svn co svn://hostname/project project --username nome_utente
In base alla configurazione del server, verrà richiesta la password. Una volta autenticati, viene eseguito il check out del codice dal repository di Subversion. Per sincronizzare il repository del progetto con la copia locale, è possibile eseguire il comando update. La sintassi del comando è la seguente:
cd project_dir ; svn update
Per maggiori informazioni sui sotto comandi di Subversion fare riferimento al manuale. Per esempio, per informazioni sul comando co (checkout), al prompt dei comandi digitare:
svn co help
La configurazione e le procedure sono le medesime del metodo svn:// . Per i dettagli consultare la sezione precedente. Questo passaggio prevede che si sia seguita la procedura precedente e il server Subversion sia stato avviato con il comando svnserve.
Si suppone che il server ssh sia in esecuzione sulla macchina e che accetti connessioni in entrata. Per una conferma, provare a collegarsi alla macchina attraverso SSH. Se il login viene eseguito, tutto è configurato. In caso contrario configurare SSH.
Il protocollo svn+ssh:// è utilizzato per accedere al repository di Subversion usando la cifratura SSL. I dati che vengono trasmessi sono cifrati con questo metodo. Per accedere al repository del progetto (per esempio attraverso un checkout), utilizzare, con il comando, la sintassi seguente:
svn co svn+ssh://hostname/var/svn/repos/project
![]() |
|
È necessario utilizzare il percorso completo (/path/al/repository/progetto) per accedere al repository di Subversion utilizzando questo metodo di accesso. |
In base alla configurazione del server, viene richiesta la password. Utilizzare la password per il login con SSH. Una volta autenticati, viene fatto il checkout del codice dal repository di Subverison.
CVS è un sistema di controllo della versione. È possibile utilizzarlo per registrare i cambiamenti al codice sorgente di un programma.
Per installare cvs al prompt dei comandi digitare:
sudo apt-get install cvs
Dopo aver installato cvs, si dovrebbe installare xinetd per avviare o fermare il server cvs. Per installare xinetd digitare:
sudo apt-get install xinetd
Once you install cvs, the repository will be automatically initialized. By default, the repository resides under the /var/lib/cvs directory. You can change this path by running following command:
cvs -d /your/new/cvs/repo init
Once the initial repository is set up, you can configure
xinetd to start the CVS server.
You can copy the following lines to the
/etc/xinetd/cvspserver
file.
service cvspserver { port = 2401 socket_type = stream protocol = tcp user = root wait = no type = UNLISTED server = /usr/bin/cvs server_args = -f --allow-root /var/lib/cvs pserver disable = no }
![]() |
|
Assicurarsi di modificare il repository nel caso in cui si sia modificata la directory predefinita del repository (/var/lib/cvs). |
Once you have configured xinetd you can start the cvs server by running following command:
sudo /etc/init.d/xinetd start
Per avere la conferma che il server CVS sia avviato digitare il seguente comando:
sudo netstat -tap | grep cvs
L'output del comando precedente dovrebbe essere:
tcp 0 0 *:cvspserver *:* LISTEN
A questo punto è possibile aggiungere altri utenti, nuovi progetti e gestire il server CVS.
![]() |
|
CVS consente di aggiungere nuovi utenti indipendentemente dal sistema operativo. Il modo più semplice è utilizzare l'utente Linux per CVS, benché presenti dei problemi di sicurezza. Consultare il manuale di CVS per maggiori dettagli. |
This section explains how to add new project to the CVS repository. Create the directory and add necessary document and source files to the directory. Now, run the following command to add this project to CVS repository:
cd your/project cvs import -d :pserver:username@hostname.com:/var/lib/cvs -m "Importing my project to CVS repository" . new_project start
![]() |
|
È possibile utilizzare la variabile d'ambiente CVSROOT per memorizzare la directory root d iCVS. Una volta esportata la variabile CVSROOT, si può evitare di utilizzare l'opzione -d nel comando precedente. |
The string new_project is a vendor tag, and start is a release tag. They serve no purpose in this context, but since CVS requires them, they must be present.
![]() |
|
Quando si aggiunge un nuovo progetto, l'utente CVS deve avere i permessi di scrittura per il repository CVS (/var/lib/cvs). In modo predefinito, il gruppo src possiede tali permessi. Basta semplicemente aggiungere l'utente a questo gruppo per permettergli di gestire progetti in un repository CVS. |