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.