Subversion Setup · 4 min read · Jan 02, 2026

Impostare un Repository Subversion Utilizzando Apache, Con Copia di Lavoro Aggiornabile Automaticamente - Pagina 2

Creazione di un repository:

Supponiamo di voler creare un Repository in /usr/local/subversion/repository utilizzando un database fsfs, quindi esegui il comando:

mkdir -v /usr/local/subversion/
/usr/bin/svnadmin create --fs-type fsfs /usr/local/subversion/repository

Questo dovrebbe creare un repository subversion sotto /usr/local/subversion/repository.

ls /usr/local/subversion/repository
conf/  dav/  db/  format  hooks/  locks/  README.txt

Dovresti essere in grado di vedere quei file nella directory del repository.

Configurazione di httpd.conf per servire il repository creato:

Aggiungi le seguenti righe a httpd.conf o al file di configurazione apache appropriato.



  DAV svn

  SVNPath /usr/local/subversion/repository/

Assicurati che il modulo mod_dav sia caricato nel file di configurazione apache e sia anche presente nella directory dei moduli.

Configurazione dell’autenticazione:

Per l’autenticazione dobbiamo apportare modifiche alla configurazione di apache un’altra volta.

L’autenticazione di base richiede che aggiungiamo semplicemente le seguenti righe a httpd.conf dove abbiamo aggiunto in precedenza il repository svn.

AuthType Basic

AuthName "{Nome della scheda popup di autenticazione}"

AuthUserFile {Percorso del file di password}

Require valid-user

Quindi dovrebbe apparire così.



  DAV svn

  SVNPath /usr/local/subversion/repository/

  AuthType Basic

  AuthName "Repository Subversion"

  AuthUserFile /usr/local/subversion/repository/conf/svn-auth-file

  Require valid-user

È necessario che aggiungiamo utenti al file di password prima che chiunque possa accedervi, come descritto nel passaggio successivo.

Aggiunta di utenti SVN:

Poiché stiamo utilizzando svn con un server apache, e un metodo di autenticazione di base apache.

Dobbiamo creare un file di password con il binario htpasswd fornito con un’installazione apache standard.

htpasswd -cmd /usr/local/subversion/repository/conf/svn-auth-file {nome-utente}

L’opzione -c crea un nuovo file htpasswd.

-m cripta la password con un algoritmo MD5.

-d cripta la password con un algoritmo CRYPT.

Dove {nome-utente} rappresenta un nome utente effettivo che sarà utilizzato per l’autenticazione.

Attenzione: Non dovremmo utilizzare l’opzione -c una volta aggiunto il primo utente. Utilizzarla creerà e sostituirà tutti gli utenti esistenti nel file.

htpasswd -md /usr/local/subversion/repository/conf/svn-auth-file {nome-utente}

Configurazione della struttura iniziale del repository:

Un repository contiene principalmente 3 cartelle standard.

branches
tags
trunk

Per creare quelle cartelle standard in un repository, crea una cartella temporanea ovunque tu voglia, /tmp sarebbe una buona idea, con le seguenti sottodirectory.

mkdir -pv /tmp/subversion-layout/{branches,tags}

Dopo aver creato tutte le cartelle di layout, sposta tutto il contenuto del tuo progetto nella cartella trunk.

mv -v /usr/local/apache2/htdocs /tmp/subversion-layout/trunk

Quindi fai un’importazione iniziale della directory temporaneamente creata.

/usr/local/subversion/bin/svn import /tmp/subversion-layout/ http://127.0.0.1/subversion/

Questo ti configurerà con una struttura di repository predefinita e farà una prima revisione.

Configurazione di una copia di lavoro:

Possiamo eliminare le cartelle temporanee create nell’ultimo passaggio, poiché tutti i file sono già nel repository.

Ora ciò che dobbiamo fare è creare una copia di lavoro di tutti i file nel repository sotto /usr/local/apache2/htdocs.

In modo che ogni volta che uno sviluppatore aggiorna i codici php, possa vedere le modifiche al codice che hanno effetto in un ambiente di lavoro.

Ma configurare una copia di lavoro non porterebbe a questo compito, dovremmo far funzionare gli script hook con una copia di lavoro.

Quindi, ogni volta che uno sviluppatore effettua un commit nel repository, lo script hook verrà eseguito automaticamente e aggiornerà la copia di lavoro.

Assicurati che la cartella htdocs sotto /usr/local/apache2/ non esista già.

Se vuoi, puoi rinominarla in htdocs_old.

Per configurare una copia di lavoro, fai quanto segue.

cd /usr/local/apache2/
su – apache
/usr/local/subversion/bin/svn checkout http://127.0.0.1/subversion/trunk/ htdocs

Configurazione degli script hook:

Un hook è un programma attivato da un evento del repository, come la creazione di una nuova revisione o la modifica di una proprietà non versionata. Ogni hook riceve abbastanza informazioni per sapere quale sia quell’evento, su quale/i target sta operando e il nome utente della persona che ha attivato l’evento. A seconda dell’output o dello stato di ritorno dell’hook, il programma hook può continuare l’azione, interromperla o sospenderla in qualche modo.

La sottodirectory hooks è, per impostazione predefinita, riempita con modelli per vari hook del repository.

post-commit.tmpl          post-unlock.tmpl          pre-revprop-change.tmpl
post-lock.tmpl            pre-commit.tmpl           pre-unlock.tmpl
post-revprop-change.tmpl  pre-lock.tmpl             start-commit.tmpl

Per ora, discuterò dello script hook post-commit, poiché è ciò di cui abbiamo bisogno nel nostro caso.

Copia il file post-commit.tmpl in post-commit nella stessa directory hooks e dai diritti di esecuzione a post-commit.

cp -v /usr/local/subversion/repository/hooks/post-commit.tmpl /usr/local/subversion/repository/hooks/post-commit
chmod +x /usr/local/subversion/repository/hooks/post-commit

Ora modifica lo script post-commit e commenta le seguenti due righe in fondo, e aggiungi la seguente riga ad esso.

#commit-email.pl "$REPOS" "$REV" [email protected]

#log-commit.py --repository "$REPOS" --revision "$REV"

/usr/bin/svn update /usr/local/apache2/htdocs/ >> /usr/local/subversion/repository/logs/post-commit.log

Dopo aver fatto ciò, crea una nuova cartella logs, sotto /usr/local/subversion/ in modo da poter abilitare il logging, e crea un file vuoto post-commit.log.

mkdir -v /usr/local/subversion/repository/logs/
touch /usr/local/subversion/repository/logs/post-commit.log

Ancora una volta, dobbiamo assicurarci che la cartella del repository abbia la corretta proprietà utente, è consigliabile impostare la proprietà su /usr/local/subversion/repository/ per l’utente apache.

chown -Rv apache.apache /usr/local/subversion/repository/

Se tutto va bene, dovrebbe essere tutto.

Ora hai un server repository subversion funzionante pronto per ulteriori importazioni, non appena avvii il server apache.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.