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.

[[email protected] ~]$ svn --version

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

[[email protected] ~]$ 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.

[[email protected] ~]$ su -
Password: 
[[email protected] ~]# yum install subversion

[[email protected] ~]$ 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.

[[email protected]]$ sudo apt-get update
[sudo] password for jerry:

[[email protected]]$ sudo apt-get install subversion

[[email protected]]$ 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.

[[email protected] ~]$ su -
Password: 
[[email protected] ~]# 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.

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

Cerchiamo di creare utente jerry

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

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

[[email protected] ~]# mkdir /var/www/svn
[[email protected] ~]# 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.

[[email protected] svn]# svnadmin create project_repo

[[email protected] 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.

[[email protected] svn]# chown -R apache.apache project_repo/

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

[[email protected] 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.

[[email protected] svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

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

[[email protected] 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.

[[email protected] 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  ]
[[email protected] svn]# service httpd status
httpd (pid  1372) is running...
[[email protected] 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.

[[email protected] svn]# mkdir /tmp/svn-template
[[email protected] svn]# mkdir /tmp/svn-template/trunk
[[email protected] svn]# mkdir /tmp/svn-template/branches
[[email protected] svn]# mkdir /tmp/svn-template/tags

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

[[email protected] 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.
[[email protected] 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.