[SubVersion] Installazione e configurazione di un server SVN su Linux Debian

In questo articolo si descrivono i passaggi per installare e configurare un server SVN (http://subversion.tigris.org/) su ambiente Linux (Debian) per il versioning del codice sorgente e della documentazione di un progetto.

Per installare l’ultima versione di Subversion presente sulla repository della distribuzione Debian, occorre lanciare da terminale il seguente comando:

$ apt-get install subversion
									

Tale comando scarica l’ultima release di Subversion e risolve tutte le dipendenze. Se si riscontrano problemi, occorre scaricare e installare tutti i pacchetti e procedere con una installazione manuale. Se si usa una distribuzione Linux che non sia Debian o il comando apt-get non è disponibile, leggete l’articolo How to install subversion on Linux and make it working.

Per verificare che l’installazione del server SVN sia andata a buon fine, basta digitare sulla shell il comando svn. Se è tutto ok, potete passare alla creazione della repository. Ecco il comando:

$ svnadmin create /srv/svn/repos
									

Tale comando crea la repository nel percorso /srv/svn/repos/ del vostro server (potete sceglierne anche uno a vostro piacimento). Se tutto è andato a buon fine, ritroverete in tale directory i seguenti file e sottodirectory:

conf/   dav/    db/    format/    hooks/    locks/     README.txt

Di seguito, ulteriori dettagli sulla configurazione e l’utilizzo del server SVN installato.

Importazione e checkout di una working copy sul server SVN

Se vi occorre importare una directory di lavoro sul server SVN, stando sulla stessa macchina in cui è installato, ecco il comando:

$ svn import /tmp/projects file:///srv/svn/repos -m "initial import"
									

Tale comando copia la directory /tmp/projects sulla repository /srv/svn/repos

Se occorre, invece, fare l’operazione inversa (detta di checkout) e, dunque, riversare il contenuto della repository su una “working copy” locale, il comando è:

$ svn checkout file:///srv/svn /repos/ home/projects
									

Altri comandi utili sono i seguenti:

$ svn diff (informazioni sulla versione del file)

$ svn commit (invio la nuova versione alla repository)

$ svn update (aggiorno le versioni dei file in repos)
									

 

Configurazione server SVN (esecuzione in daemon mode – avvio e stop del server)

Per mettere il server SVN in “daemon mode” (in modo che parta in automatico al riavvio del sistema operativo), basta lanciare su shell il comando:

svnserve -d --listen-host 1.2.3.4 -r /srv/svn/repos/
									

(dove 1.2.3.4 si deve sostituire con l’indirizzo IP della macchina su cui è installato il server).

Se il servizio svnserve è partito correttamente, di default si mette in ascolto sulla porta 3690.

Digitando il comando:

netstat --all --programs --numeric-ports | less
									

potete visualizzare se il processo svnserve è in esecuzione sull’indirizzo IP della vostra macchina e in ascolto sulla porta desiderata (di default, 3690). Vi viene visualizzato anche il PID di tale processo, utile per lo stop del demone.

Per stoppate il servizio svnserve basta killare il processo con il comando:

kill -9 PID
									

dove PID è l’id del processo svnserve in esecuzione.

 

Accesso al server SVN con un client da remoto

Se occorre connettersi in remoto al server SVN installato, basta utilizzare dei client SVN. I più utilizzati sono Tortoise (http://tortoisesvn.tigris.org/) e Eclipse Subversive (plugin di Eclipse – www.eclipse.org/subversive/).

Il checkout per un client sarà:

snv checkout svn://host.example.com/srv/svn/repos

oppure con il protocollo HTTP:

svn checkout http://host.example.com/srv/svn/repos

Quando un client si connette al processo svnserve occorre seguire questi passaggi essenziali:

  • Il client specifica la repository su cui lavorare;

  • Il server SVN legge i file di autenticazione contenuti nella directory della repository conf/svnserve.conf;

  • Il client riceve una identificazione come utente autorizzato o non autorizzato, con possibilità, cioe’, di sola lettura o anche di scrittura sulla repository.

Bisogna, quindi, creare dei permessi per gli utenti in modo da controllare l’accesso alla repository, come descritto di seguito.

Configurazione delle utenze

I file da modificare si trovano sotto la directory /srv/svn/conf e  sono: passwd, svnserve.conf.

Per prima cosa si edita il file passwd inserendo gli utenti con relative password in questo modo (“username” = “password”):

user1 = password1
user2 = password2
...
									

Poi si modifica il file svnserve.conf abilitando i seguenti campi:

  #
  # Sample /srv/svn/conf/svnserve.conf
  #
  [general]
  
  # Path to the file containing svn users and passwords.
  password-db = /srv/svn/conf/passwd
  
  # Authentication realm of the repository. Two repositories using the
  # same password-db should have the same realm.
  realm = My-test-repository
  
  # Deny all anonymous access (none=non permette di accedere senza password alla repository)
  anon-access = none 
  
  # Grant authenticated users read and write privileges
  auth-access = write
									

Creazione di gruppi di utenti

Nel caso in cui vi occorra inserire gli utenti in gruppi che abbiano l’accesso solo a determinate directory della vostra repository, occorre inserire nel file authz  (presente sotto la directory conf della vostra repository) la definizione dei gruppi:

[groups]
admin=admin1, admin2
groupForPath1=user1, user2, user3, …
groupForPath2=user4, user5, ..

[/]
@admin=rw

[/path1I]
@groupForPath1=rw

[/path2]
@groupForPath2=rw

(dove rw sta per read-write, e si danno tali permessi ai gruppi sulle directory specificate. Gli utenti elencati in corrispondenza di ciascun gruppo, sono gli stessi che sono stati mappati nel file passwd).

Infine, occorre decommentare nel file svnserve.conf la riga seguente:

### Uncomment the line below to use the default authorization file.
# authz-db = /path_to_conf/authz

Specificando il path assoluto al file authz precedentemente modificato.


Ecco due riferimenti utili:

4 pensieri su “[SubVersion] Installazione e configurazione di un server SVN su Linux Debian

  1. Ciao, ho visto che per la creazione del repo usi il comando $ svnadmin create /srv/svn/repos , come utente normale, ma in quella directory non si hanno permessi di scrittura.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


8 + nove =