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/repositoryQuesto dovrebbe creare un repository subversion sotto /usr/local/subversion/repository.
ls /usr/local/subversion/repositoryconf/ dav/ db/ format hooks/ locks/ README.txtDovresti 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-userQuindi 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.
branchestagstrunkPer 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/trunkQuindi 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/ htdocsConfigurazione 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.tmplpost-lock.tmpl pre-commit.tmpl pre-unlock.tmplpost-revprop-change.tmpl pre-lock.tmpl start-commit.tmplPer 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-commitchmod +x /usr/local/subversion/repository/hooks/post-commitOra 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.logDopo 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.logAncora 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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.