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.