Subversion hoidla kasutamine Debianiga
Sisukord
- 1 Sissejuhatus
- 2 Subversioni arhitektuur
- 3 Subversion tarkvara paigaldamine
- 4 Hoidla moodustamine
- 5 Väljavõtte tegemine
- 6 Väljavõttega töötamine
- 7 Revisioni kasutamine
- 8 Sildi kasutamine
- 9 Hoidlale ligipääsu korraldamine
- 10 Apache veebiserveri kasutamine kaugligipääsuks
- 11 Kaugligipääs svnserve vahendusel
- 12 Kasulikud lisamaterjalid
Sissejuhatus
Subversion http://subversion.tigris.org/ on versioonihalduse tarkvara (ingl. k. version control system), mida algselt asus arendama Collabnet http://www.collab.net/, tänapäeval on Subversion nn vaba tarkvara projekt. Subversion tarkvara kasutamine toimub Apache litsentsi http://en.wikipedia.org/wiki/Apache_License alusel.
Üldiselt kasutatakse versioonikontrolli tarkvara selleks, et hõlbustada mingi tekstilist tulemust tekitava ülesandega tegelevatel osalistel, nt programmeerijatel, üksteise tegevusest osa saada ja koostööd teha. Samal ajal ei ole versioonikontroll iseenesest projektijuhtimise tarkvara.
Tavaliselt kasutavad kõik osalised ühte keskset versioonihalduse serveris asuvat repositooriumit, kus asuvad kõneksolevale projektile vastavad andmed ning iga kasutaja töökohaarvutis on keskse projekti või selle osa koopia, mida nimetatakse kasutaja tööversiooniks. Kasutajad teevad muudatusi oma tööversiooni ning sünkroniseerivad andmeid keskse repositooriumiga. Sellise sünkroniseerimise käigus kopeerivad kasutajad oma tööversiooni tehtud muudatused versioonihalduse repositooriumisse ning saavad osa teiste kasutajate poolt tehtud muudatustest eeldusel, et teised kasutajad on oma muudatused eelnevalt repositooriumisse kopeerinud. Andmevahetus toimub ainult kasutaja ja repositooriumi vahel, mitte kunagi otse kahe kasutaja tööversioonide vahel.
Käesolev tekst keskendub Subversionit kasutava versioonihalduse süsteemi käivitamisel, eriti repositooriumi ettevalmistamisel ja seetõttu pakub tõenäoliselt huvi pigem süsteemiadministraatorile kui versioonihalduse süsteemi lõppkasutajale. Lõppkasutajale sobivamaks on tõenäoliselt versioonihalduse kliendi kasutamist käsitlev tekst, nt TortoiseSVN.
Subversioni arhitektuur
Subversioni ehitust kujutab kõrgel abstraktsioonitasemel selline skeem
SVN käsureaklient GUI SVN kliendid \ / ------------------------------------------------- kliendi teekide liides \ / kliendi teegid ' v hoidlale ligipääsumoodused DAV SNV Local | | | võrk (nt internet) | | | | | | | v v | | Apache veebiserver svnserve | ' ' | ------------------------------------------------- hoidla liides | | | v v v Subversion hoidla / \ ' ' Berkeley DB FSFS
kus on esitatud
- skeemi ülaosas on kujutatud Subversioni klientprogramme, mis standadsete teekide kaudu suhtlevad hoidlaga kasutades kolme nö ühenduskanali võimalust, 1. DAV läbi Apache veebiserver, 2. SVN üle svnserve serveri ning 3. otse failisüsteemi kaudu, eeldusel, et klienti saab kasutada hoidlaga samas arvutis
- DAV ja SVN andmevahetus toimub üle avaliku võrgu kasutades TCP protokolli
- Subversioni hoidla võib esineda oma sisemise andmesalvestusformaadi mõttes kahel kujul, Berkeley DB või FSFS
Subversion tarkvara paigaldamine
Debian v. 5.0 Lenny sisaldab paketihalduses Subversion versioonikontrolli tarkvara v. 1.5.1, paigaldamiseks tuleb öelda
# apt-get install subversion
Pakett subversion sisaldab
- svn - Subversioni klient suhtlemiseks hoidlaga
- svnadmin - Subversioni administreerimise utiliit
- svnserve - Subversioni server võrgus hoidla kättesaadavaks tegemiseks
Hoidla moodustamine
- Hoidla moodustamiseks tuleb öelda
$ svnadmin create /srv/svn/loomaaia-elektrifitseerimine
- Projekti lähtepunktiks olev kataloog võiks olla sellise sisuga
$ cd /tmp/loomaaia-elektrifitseerimine $ find . -ls 118313 4 drwxr-xr-x 5 www-data www-data 4096 Mar 28 17:58 . 118316 4 drwxr-xr-x 3 www-data www-data 4096 Mar 28 18:00 ./trunk 118317 4 drwxr-xr-x 4 www-data www-data 4096 Mar 28 18:01 ./trunk/www 118319 4 drwxr-xr-x 2 www-data www-data 4096 Mar 28 18:02 ./trunk/www/gfx 118323 4 -rw-r--r-- 1 www-data www-data 10 Mar 28 18:02 ./trunk/www/gfx/pilt.gif 118318 4 drwxr-xr-x 2 www-data www-data 4096 Mar 28 18:02 ./trunk/www/css 118322 4 -rw-r--r-- 1 www-data www-data 6 Mar 28 18:02 ./trunk/www/css/2.css 118321 4 -rw-r--r-- 1 www-data www-data 6 Mar 28 18:01 ./trunk/www/css/1.css 118315 4 drwxr-xr-x 2 www-data www-data 4096 Mar 28 17:58 ./tags 118314 4 drwxr-xr-x 2 www-data www-data 4096 Mar 28 17:58 ./branches
- Lähteandmete importimine SVN hoidlasse
$ svn import /tmp/loomaaia-elektrifitseerimine file:///srv/svn/loomaaia-elektrifitseerimine -m "Initial import" Adding /tmp/loomaaia-elektrifitseerimine/trunk Adding /tmp/loomaaia-elektrifitseerimine/trunk/www ... Committed revision 1.
Ligipääsu hoidlale kontrollivad kolm faili
- /srv/svn/fai-config/conf/svnserve.conf - üldine konfiguratsioon
- /srv/svn/fai-config/conf/passwd - kasutajate paroolifail
- /srv/svn/fai-config/conf/authz - kasutajate autoriseerimine
Vaikimisi saab lokaalsest arvutist kasutaja svn'i piiramatult, üle võrgu saab anonüümne kasutaja lugeda.
Väljavõtte tegemine
Lokaalsest arvutist
$ svn checkout file:///srv/svn/fai $ svn export file:///srv/svn/fai
Üle võrgu, svn kasutab porti 3690/tcp
$ svn checkout svn://192.168.10.199/fai-config
Üle võrgu, Apache veebiserveri abil vahendatud SVN repositooriumist
$ svn co https://snv.loomaaed.tartu.ee/tarkvara/svn/projektid/test-1
Väljavõttega töötamine
- Olemasoleva faili muudatuse hoidlasse kopeerimiseks sobib öelda
$ svn --username priit commit -m "Oluline muudatus seoses loomade toitumisega"
- Faili lisamisel
$ svn --username priit add css/3.css A css/3.css $ svn --username priit commit -m "Faili css/3.css lisamine" Adding www/css/3.css Transmitting file data . Committed revision 4.
- Kataloogi lisamisel
$ svn --username priit add docs A docs $ svn --username priit commit -m "Kataloogi docs lisamine" Adding www/docs Transmitting file data . Committed revision 4.
- Kataloogi kustutamine hoidlast
$ svn --username priit delete http://loomaaed.tartu.ee/projektid/loomaaia-elektrifitseerimine/trunk/www/docs
Revisioni kasutamine
Olgu revision numbriks 31880, sel juhul saab selle versiooni kopeerida öeldes
$ svn export -r 31880 --username=priit https://svn.loomaaed/projektid/test/trunk
Sildi kasutamine
Sildi moodustamine
$ svn copy --username=priit https://svn.loomaaed/projektid/test/trunk https://svn.loomaaed/projektid/test/tags/release-1.0 -m "esimese reliisi tag"
Sildi järgi exportimine
$ svn export --username=priit https://svn.loomaaed/projektid/test/tags/testprojekt_0002_BUGFIX/www
Hoidlale ligipääsu korraldamine
Selleks, et hoidla ressurssidele saaks ligi ainult autenditud kasutaja tuleb kasutada nt selliseid seadistusfaile
$ egrep -v "^#|^$" /srv/svn/fai-config/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = passwd authz-db = authz [sasl]
$ egrep -v "^#|^$" /srv/svn/fai-config/conf/passwd [users] imre = parool
$ egrep -v "^#|^$" /srv/svn/fai-config/conf/authz [aliases] [groups] [/] priit = rw
Kasutamiseks tuleb öelda
$ svn checkout svn://priit@192.168.10.199/fai-config
Apache veebiserveri kasutamine kaugligipääsuks
Hoidlale kaugligipääsu korraldamine Apache veebiserveri vahendusel on eelistatud lahendus sellistel põhjustel
- https:// kasutamise võimalus turvaliseks andmevahetuseks
- hoidla kasutajate autentimise võimalus ldap kataloogi abil
Apache veebiserveri ettevalmistamine
# apt-get install apache2 libapache2-svn .. Enabling module dav. Enabling module dav_svn.
Kasutajate autentimine vastu tekstifaili
<Location /tarkvara/svn/projektid> DAV svn SVNParentPath /srv/svn AuthzSVNAccessFile /etc/svn-dav-passwd AuthType Basic AuthName "Subversion repository" AuthUserFile /etc/svn-dav-htpasswd Require valid-user Order Allow,Deny Allow from All </Location>
Kasutajate autentimine vastu LDAP kataloogi
<VirtualHost 192.168.6.130:443> ServerName svn.loomaaed.tartu.ee DocumentRoot /srv/svn ErrorLog /var/log/apache2/svn.loomaaed.tartu.ee-error.log TransferLog /var/log/apache2/svn.loomaaed.tartu.ee-access.log SSLEngine on SSLCipherSuite HIGH:MEDIUM SSLCertificateFile /etc/apache2/serdid/svn.loomaaed.tartu..ee-cert.pem SSLCertificateKeyFile /etc/apache2/serdid/svn.loomaaed.tartu..ee-key.pem SSLCertificateChainFile /etc/apache2/serdid/loomaaed-ca-chain.pem <Location /tarkvara/svn/projektid> DAV svn SVNParentPath /srv/svn/projektid AuthzSVNAccessFile /etc/svn-dav-passwd AuthType Basic AuthName "Subversion repository" AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL "ldaps://ldap.loomaaed.tartu.ee/DC=loomaaed,DC=tartu,DC=ee?uid?sub?(objectClass=*)" Require valid-user Order Allow,Deny Allow from All </Location> <Directory /srv/svn/projektid> AllowOverRide None Order Allow,Deny Allow from All </Directory> </VirtualHost>
Kaugligipääs svnserve vahendusel
TODO