Installare Subversion Gentoo – How To
Questa non è altro che una mera traduzione di un articolo http://www.rockfloat.com/howto/gentoo-subversion.html, veramente ben fatto che ha permesso anche a un impedito come me di installare subversion su una gentoo installata su una virtual machine che tuttora uso per ordinare i repository dei sorgenti di quasi tutti i miei lavori:
Ringrazio l’autore John McFarlane che mi ha permesso di pubblicare la traduzione per intero su questo blog.
- 1. Installare Subversion e Apache
Subversion supporta 2 formati per lo stoccaggio dei dati:
1. FSFS (Filesystem)
2. BDB (Berkeley DB)Poiche’ FSFS e’ diventato quello di default e non e’ piu’ necessario usare berkdb nello USE flag.Dobbiamo
aggiungere il supporto per apache2 a /etc/make.confPer esempio:USE="apache2 postgres gd xml -X -gtk -gnome -qt -kde -alsa"
Installiamo Subversion and Apache. Naturalmente se avete apache gia’ installato saltatelo:
root# emerge -a subversion apache
- 2. Settare gli utenti e i permessi per le directories
#Creare un gruppo per l'accesso ssh ai repositories root# groupadd svnusers # Creare la directory dove ci saranno i repositories root# mkdir -p /var/svn/repos root# chmod -R 775 /var/svn/repos root# mkdir /var/svn/conf #Aggiungere gli utenti che hanno bisogno di accedere ai repositories root# gpasswd -a apache svnusers #Aggiunge l'utente apache al gruppo svnusers root# gpasswd -a foouser svnusers #Aggiunge l'utente foouser al svnusers
- 3. Avvio del servizio (per permettere l’accesso ssh )
Eventualmente si potrebbe usare WEBDAV per l’accesso remoto,ma per ora usiamo sshroot# /etc/init.d/svnserve start root# rc-update add svnserve default
- 4.Creare Un Repository di Test
Un repository di test e’ un ottimo modo per testare con mano e capire come funzionano le cose!# Creare il test repository root# svnadmin create /var/svn/repos/test# Settare i permessi root# chown -R apache:svnusers /var/svn/repos/ root# chmod -R g-w /var/svn/repos/test root# chmod -R g+rw /var/svn/repos/test/db root# chmod -R g+rw /var/svn/repos/test/locks # Aggiungere test directory e mostrarne i contenuti root# svn mkdir file:///var/svn/repos/test/foo -m "Creat test directory" root# svn ls file:///var/svn/repos/test/foo/
- 5. Creare un progetto reale nel repository
root# svnadmin create /var/svn/repos/your-project # Set permissions! root# chown -R apache:svnusers /var/svn/repos/your-project root# chmod -R g-w /var/svn/repos/your-project root# chmod -R g+rw /var/svn/repos/your-project/db root# chmod -R g+rw /var/svn/repos/your-project/locks
- 6. Struttura tipica di un repository
Una Struttura tipica di un repository e’ simile a questa:Project |--trunk |--tags |--branches
1. Trunk e’ usato per mantenere tutte le modifiche fino alla data della versione stabile del vostro software.
2. Tags e’ usato per le vecchie copie del software taggate alle varie milestones, per es. v1, v2, v3.
3. Branches e’ usato per tutte le copie che pero’ sono ancora in sviluppo (per es. php4)… ma richiede una separazione e sarebbe necessaria un tutorial solo per spiegarle.[…] - 7. Mettere un progetto sotto il controllo di versione
Occorre importare i file del progetto dentro il respository vostro-progetto. Qui verra’ come esempio verra’ usato il core di Apple Python files.- 1. Controllare che cosa si vuole mettere nel controllo di versione:
user # cd /usr/lib/python2.4/site-packages/apple user # tree -a . |-- INSTALL |-- LICENSE |-- __init__.py |-- functions.py |-- functions_db.py |-- shell.py |-- test | |-- __init__.py | |-- files | | |-- null | | |-- services | | |-- rockfloat.conf | | `-- wget | | `-- wgetrc | |-- test_all.py | |-- test_functions.py | `-- test_functions_db.py |-- www | |-- __init__.py | |-- filebrowser.py | |-- html.py | |-- next_previous.py | |-- page.py | |-- rss.py | `-- user.py `-- xml_sax.py 4 directories, 22 files
- 2. Prima di tutto voglio che il contenuto del mio progrtto vada nella trunk di /var/svn/repos/apple repository, e dovrei importarlo in questo modo:
# Eseguire questo da un computer in remoto: user# cd /usr/lib/python2.4/site-packages/apple user# svn import . file:///var/svn/repos/apple/trunk -m 'Initial import' Adding... Adding... Committed revision 1.
- 3. Controllare i dati che sono stati immessi:
root# svn ls file:///var/svn/repos/apple/trunk INSTALL LICENSE __init__.py functions.py functions_db.py shell.py test/ www/ xml_sax.py
- 4. fate un backup dei vostri dati prima del prossimo punto.
- 5. Ora abbiamo bisogno di cancellare i sorgenti dal nostro computer *deep breath* (Fate un profondo respiro! LoL ndp) e estrarli nuovamente dal nostro repository.
La ragione di tutto cio’ e’ perche’ tu non hai ora una directory di svn in locale. Tu hai importato i file dentro il server di svn occorre tirarne fuori una copia dai client per poterci lavorare.
La differenza dei file sorgenti rispetto a prima e’ che in ogni directories del progetto c’e’ una .svn directory.
Subversion usa questa cartella per fare tutto quello che deve fare in maniera veloce e pulita.
- 1. Controllare che cosa si vuole mettere nel controllo di versione:
- 8. Configurare Apache per supportare Svn allo startup
- Update /etc/conf.d/apache2 by adding the following to the APACHE2_OPTS parameter:
-D SVN -D SVN_AUTHZ -D DAV -D DAV_FS -D SSL -D SSL_DEFAULT_VHOST
Per esempio:
APACHE2_OPTS="-D PYTHON -D SSL -D SVN -D SVN_AUTHZ -D DAV -D DAV_FS"
- 9. Creare un Apache password fileQuando un utente accede,subversion usa WEBDEV, L’autenticazione ora viene intercettata da apache.Per far si che apache faccia questa cosa occorre un file che
controllare le password.E’ scontato che il file deve essere settato in scrittura solo da root!# Usare l'opzione -c per creare il file quando si aggiunge il primo utente root# htpasswd2 -c /var/svn/conf/svnusers foouser# Aggiungere un altro utente root# htpasswd2 /var/svn/conf/svnusers baruser
- 10. Creare una policy per SVN dentro a un file
- Il supporto per i diritti degli utenti è fantastico.
Ti permette di dirgli se l’utente foouser ha i diritti di lettura e scrittura, mentre l’utente baruser può solo leggereroot# nano -w /var/svn/conf/svnpolicy[your-project:/] * = r [another-project:/] foouser = rw baruser = r [yet-another:/trunk/procected] foouser = rw
- 11. Configurare il supporto di apache per SVN
- Fare il backup del /etc/apache2/modules.d/47_mod_dav_svn.conf, e renderlo simile a questo :
LoadModule dav_svn_module modules/mod_dav_svn.so DAV svn SVNParentPath /var/svn/repos #SSLRequireSSL AuthType Basic AuthName "Super Duper SVN Repository" AuthUserFile /var/svn/conf/svnusers AuthzSVNAccessFile /var/svn/conf/svnpolicy Require valid-user SVNIndexXSLT /svnindex.xslLoadModule authz_svn_module modules/mod_authz_svn.so - 12. Usare i template grafici di Subversion con i file xsl e css
Credo che tu voglia rendere carino Subversion… o no? :-Dps
nella mia versione di subversion non erano in gz ma in bz2 ma non cambia molto.root# cp /usr/share/doc/subversion-1.2.3-r2/svnindex.* /var/www/localhost/htdocs/ root# cd /var/www/localhost/htdocs root# gunzip svnindex.css.gz root# gunzip svnindex.xsl.gz
- 13. Riavvare apache
Provare a riavvare il servizio di apache:root# /etc/init.d/apache2 restart
Ora dovreste riuscire a vedere il vostro progetto a questo indirizzo:
http://your-server/svn/repos/your-project/trunk/ - 14. Consiglio veramente utile, Come creare una TAG
- Se non avete una dir per le tag nel vostro repository occorre crearla:
user# svn mkdir http://rockfloat.com/svn/repos/apple/tags -m "Initial creation"
Qui c’e’ l’esempio di come popolare le tag o copiare i dati dalla trunk dentro la tag directory
(create la tag specifica 0.1.1 e popolatela come riportato qui di seguito)user# svn cp \ > http://rockfloat.com/svn/repos/apple/trunk \ > http://rockfloat.com/svn/repos/apple/tags/0.1.0 \ > -m "Initial release, doesn't do much of anything really"
Non scappare subito via! Forse ti interessano...
L'articolo ti è stato utile?
Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!