SVN - Configurazione dell'ambiente

Installazione SVN

Subversion è un popolare strumento di controllo delle versioni open source. È open source e disponibile gratuitamente su Internet. Viene fornito per impostazione predefinita con la maggior parte delle distribuzioni GNU / Linux, quindi potrebbe essere già installato sul sistema. Per verificare se è installato o meno, utilizzare il seguente comando.

[jerry@CentOS ~]$ svn --version

Se il client Subversion non è installato, il comando riporterà un errore, altrimenti visualizzerà la versione del software installato.

[jerry@CentOS ~]$ svn --version
-bash: svn: command not found

Se stai usando GNU / Linux basato su RPM, allora usa yumcomando per l'installazione. Al termine dell'installazione, eseguire il filesvn --version comando.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install subversion

[jerry@CentOS ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03

E se stai usando GNU / Linux basato su Debian, allora usa apt comando per l'installazione.

[jerry@Ubuntu]$ sudo apt-get update
[sudo] password for jerry:

[jerry@Ubuntu]$ sudo apt-get install subversion

[jerry@Ubuntu]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49

Installazione di Apache

Abbiamo visto come installare il client Subversion su GNU / Linux. Vediamo come creare un nuovo repository e consentire l'accesso agli utenti.

Sul server dobbiamo installare Apache httpd modulo e svnadmin attrezzo.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install mod_dav_svn subversion

Il mod_dav_svn pacchetto consente l'accesso a un repository utilizzando HTTP, tramite il server httpd di Apache e subversion pacchetto installa lo strumento svnadmin.

Subversion legge la sua configurazione da /etc/httpd/conf.d/subversion.conffile. Dopo aver aggiunto la configurazione,subversion.conf il file appare come segue:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

Creiamo utenti Subversion e concediamo loro l'accesso al repository. Il comando htpasswd viene utilizzato per creare e aggiornare i file di testo normale che vengono utilizzati per memorizzare nomi utente e password per l'autenticazione di base degli utenti HTTP. Le opzioni '-c' creano un file di password , se il file di password esiste già, viene sovrascritto. Ecco perché usa l'opzione "-c" solo la prima volta. L'opzione '-m' abilita la crittografia MD5 per le password.

Configurazione utente

Cerchiamo di creare utente tom.

[root@CentOS ~]# htpasswd -cm /etc/svn-users tom
New password: 
Re-type new password: 
Adding password for user tom

Cerchiamo di creare utente jerry

[root@CentOS ~]# htpasswd -m /etc/svn-users jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@CentOS ~]#

Crea la directory padre di Subversion per memorizzare tutto il lavoro (vedi /etc/httpd/conf.d/subversion.conf ).

[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www/svn/

Configurazione del repository

Crea un repository del progetto denominato project_repo . Il comando svnadmin creerà un nuovo repository e alcune altre directory al suo interno per memorizzare i metadati.

[root@CentOS svn]# svnadmin create project_repo

[root@CentOS svn]# ls -l project_repo
total 24
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 conf
drwxr-sr-x. 6 root root 4096 Aug  4 22:30 db
-r--r--r--. 1 root root    2 Aug  4 22:30 format
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 hooks
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 locks
-rw-r--r--. 1 root root  229 Aug  4 22:30 README.txt

Cambiamo la proprietà dell'utente e del gruppo del repository.

[root@CentOS svn]# chown -R apache.apache project_repo/

Verificare se SELinux è abilitato o meno utilizzando lo strumento di stato SELinux.

[root@CentOS svn]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Per il nostro server, SELinux è abilitato, quindi dobbiamo cambiare il contesto di sicurezza di SELinux.

[root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

Per consentire i commit su HTTP, eseguire il seguente comando.

[root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www/svn/project_repo/

Riavvia il server Apache e abbiamo finito con la configurazione del server Apache.

[root@CentOS svn]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS svn]# service httpd status
httpd (pid  1372) is running...
[root@CentOS svn]#

Abbiamo configurato correttamente il server Apache, ora configureremo il repository. Per fornire l'accesso al repository solo agli utenti autentici e per utilizzare il file di autorizzazione predefinito; aggiungere le seguenti righe al file project_repo / conf / svnserve.conf .

anon-access = none
authz-db = authz

Convenzionalmente, ogni progetto Subversion ha trunk, tags, e branches directory direttamente sotto la directory principale del progetto.

Il trunk è una directory in cui avviene tutto lo sviluppo principale e di solito viene estratto dagli sviluppatori per lavorare al progetto.

La directory dei tag viene utilizzata per memorizzare le istantanee con nome del progetto. Durante la creazione di una versione di produzione, il team assegnerà un tag al codice che entra nella versione.

La directory dei rami viene utilizzata quando si desidera perseguire diverse linee di sviluppo.

Creiamo la struttura di directory trunk, tag e branch nel repository del progetto.

[root@CentOS svn]# mkdir /tmp/svn-template
[root@CentOS svn]# mkdir /tmp/svn-template/trunk
[root@CentOS svn]# mkdir /tmp/svn-template/branches
[root@CentOS svn]# mkdir /tmp/svn-template/tags

Ora importa le directory da /tmp/svn-template al repository.

[root@CentOS svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn-template/ 
Adding         /tmp/svn-template/trunk
Adding         /tmp/svn-template/branches
Adding         /tmp/svn-template/tags
Committed revision 1.
[root@CentOS svn]#

Questo è fatto! Abbiamo creato con successo il repository e consentito l'accesso aTom e Jerry. Da ora, possono eseguire tutte le operazioni supportate nel repository.