attachment:subversion.png |
Introduzione
Subversion è un sistema alternativo a [:Cvs: CVS] che svolge la medesima funzione di controllo di versione. Questa operazione consiste nel poter consultare, scaricare, aggiornare sorgenti di programmi salvati in remoto su un server web. In Ubuntu questa tecnologia è sfruttata mediante il client testuale svn.
Installazione client
L'installazione del client è un passo banale: si può ottenere, nomchè installare il pacchetto svn tramite la [:RigaDiComando:riga di comando] con [:Apt:Apt] oppure per via grafica mediante [:SynapticHowto:Synaptic] o [:AdeptHowTo:Adept].
Per installare il pacchetto con apt-get da riga di comando è sufficiente digitare:
sudo apt-get install subversion
Il Checkout
L'operazione di checkout è molto semplice da eseguire ed è generalmente usata dalla maggior parte dell'utenza per ottenere una copia del percorso contenente i sorgenti, in modo da poterlo compilare/installare/adattare alle proprie esigenze.
Per eseguire il checkout di un repository remoto è sufficiente dare un comando simile al seguente:
svn co svn://nomesito/progetto cartella
Qui di seguito sono elencate le spiegazioni delle opzioni del comando precedente:
co l'operazione da eseguire (in questo caso, il checkout)
svn:// il protocollo di rete
nomesito indirizzo del server sul quale risiede il repository dei sorgenti (i.e. progetto.sourceforge.net)
progetto il nome del progetto del quale si desiderano scaricare i sorgenti. Normalmente, sullo stesso server risiedono
più progetti ed è necessario specificare il nome del progetto desiderato. Generalmente quando si esegue il checkout di un progetto, vengono fornite informazioni esaustive sul nome corretto da inserire.
cartella la cartella che verrà creata all'interno della cartella corrente, nella quale verrà salvato l'intero repository, mentenendo inalterata la sua struttura.
In questa guida, al termine repository viene associato il significato di repository SVN, che indica il percorso remoto (o locale) contenente la struttura delle directory dei sorgenti. In questo contesto, il termine in questione non ha nulla a che fare con il significato del sinonimo [:Repository:repository], ampiamente spiegato all'interno delle guide relative alla gestione dei pacchetti software. |
Altri protocolli di accesso
Il metodo di checkout sopra spiegato è quello base, valido per la maggior parte dei casi. Alcune volte però il dominio su cui risiede il repository richiede protocolli differenti. Quello che segue è un elenco dei protocolli più comuni:
Protocollo |
Descrizione |
svn+ssh:// |
È il più comune dopo SVN, si differenzia da quest'ultimo per l'uso del protocollo di connessione sicura [:SSHHowto:SSH] |
http:// |
Prevede la connessione diretta al server mediante il protocollo WebDAV |
https:// |
Come HTTP, ma mediante connessione sicura |
file:// |
Prevede l'accesso ad un repository locale |
Creare un repository SVN in locale
La spiegazione che segue spiega come creare un repository locale sul proprio computer. In realtà può essere utilizzato anche per crearne uno in remoto, purchè si abbia accesso mediante ssh al dominio ospite.
Creazione gruppo e utenti
Prima di tutto è necessario creare un nuovo gruppo utente (nell'esempio sarà chiamato subversion) che avrà accesso alla cartella dei sorgenti, dunque si dovrà assegnargli l'utente attuale e l'utente di apache (chiamato www-data).
Aprire una finestra di terminale e digitare:
sudo addgroup subversion sudo adduser nomeutente subversion sudo adduser www-data subversion
Con la dicitura nomeutente si vuole indicare il nome dell'utente che si desidera aggiungere al gruppo subversion. Sostituire tale espressione con il proprio nome utente. |
Creazione cartelle
Pur non essendo una regola, è generalmente preferibile porre la cartella svn, destinata a contenere tutti i progetti ospitati, nella cartella /home.
Per creare la nuova directory, digitare da terminale il seguente comando:
sudo mkdir /home/svn
Dunque, è necessario creare la sottocartella per il primo progetto d'esempio, che avrà come nome progetto, infine impostare come proprietario il gruppo creato:
sudo mkdir /home/svn/progetto sudo chown -R root:subversion progetto sudo chmod -R g+rws myproject
Creazione del repository locale
Per abilitare l'hosting del progetto nel repository, è sufficiente digitare il seguente comando:
sudo svnadmin create /home/svn/progetto
Importazione di un progetto in repository SVN
Per copiare un proprio progetto in un repository SVN è utile usare il comando svn con la seguente sintassi:
svn import cartellalocale svn://dominio/cartella --username=nomeutente
Assumendo:
import l'opzione per l'importazione, ovvero il comando per importare un progetto all'interno di un repository esistente
svn il protocollo di trasferimento, già descritto [#protocolli in precedenza]
dominio l'indirizzo del server su cui risiede SVN
cartella il nome della cartella sul server SVN che conterrà il nuovo progetto
nomeutente il nome dell'utente che possiede i permessi da remoto
cartellalocale il percorso completo della cartella che si desidera importare nel proprio repository
Tutto il contenuto della cartella verrà copiato ricorsvaimente nell'URL del repository, verranno create, se necessarie, anche delle directory intermedie.
Operazioni di base
Aggiungere file e cartelle ad un repository remoto
L'operazione di aggiunta di un file ad un repository remoto è piùttosto semplice e sfrutta il comando svn con la seguente sintassi:
svn add file svn://dominio/cartellaremota svn add cartellalocale svn://dominio/cartellaremota
Nel secondo caso, sul repository remoto verranno caricati tutti i file contenuti nella cartella locale selezionata.
Autenticazione
L'autenticazione ad un server SVN (ad esempio per modificare, aggiungere file ecc) può non essere necessaria, bensì viene richiesta direttamente solo in caso di operazione che necessitino tale procedura (sempre nel caso che il server sia configurato per supportare tale opzione).
Ad esempio, un comando generico come il seguente:
svn [comando] [opzioni]
Restituirà in caso di necessità (se, ad esempio, sono necessari permessi di scrittura)
Username: Password for 'nomeinserito':
Così da facile e veloce l'utilizzo.
Nel caso in cui il server non supporti tale opzione è possibile usare comunque la sintassi: |
- {{{svn [comando] [opzioni] --username nome --password pass
}}}
Copiare file e cartelle
Per copiare file e cartelle si può usare il comando svn con una sintassi simile alle seguenti:
svn copy file1 file2 svn copy file1 cartella/file1 svn copy cartella1 cartella2 svn copy cartella1 cartella2/cartella1
Spostare file e cartelle
Per spostare sia file che cartelle si può aggiungere una particolare opzione al comando svn:
svn move file1 file2 svn move file1 cartella/file1 svn move cartella1 cartella2 svn move cartella1 cartella2/cartella1
Rimuovere un file o una cartella
Si possono rimuovere file e cartelle (ricorsivamente) applicando delle specifiche opzioni al comando svn, come da esempio:
svn rm file svn rm cartella
Sfogliare un repository
Si può sfogliare un repository per sapere cosa contiene senza eseguire l'operazione di [#checkout checkout] utilizzando una sintassi particolare per il comando svn:
svn list svn://dominio/cartellaremota
Il comando dell'esempio restituirà, come risultato, la lista dei file e delle cartelle contenute in cartellaremota presente sul dominio.