Home | (How To)?
1) Upustvo za Korišćenje klijenta sistema podverzija (SVN client)
Na samom početku ne bi bilo loše objasniti sta je ustvari Subversion (skr.SVN) ili u prevodu sistem podverzija. Kao što sama reč govori to je sistem koji nam pomaže da različite verzije i podverzije fajlova, datoteka i direktorijuma organizujemo i da vršimo praćenje njihovih izmena. Ovo je korisno ako grupa ljudi radi na nekom projektu i potrebno je da svaki član grupe uvek ima poslednju verziju ili izdanje projekta na kome radi (programeri, prevodioci i sl.).
Uz pomoć sistema podverzija, rad na projektu sa grupom ljudi je znatno olakšano, jer se kompletan projekat nalazi na jednom mestu, negde na nekom serveru na internetu ili u LAN-u, i svi korisnici tog zajedničkog skladišta će uvek pre početka posla preuzeti poslednje izdanje projekta i nakon završetka svoje izmene vratiti u skladište. Sjajno zar ne :).
Ovakav sistem za održavanje nekog projekta nije nov. Subversion je u stvari naslednik CVS'a (u prevodu "sistem uporednih verzija") koji se sad već sve manje koristi jer SVN zbog svoji mogućnosti postaje sve popularniji. Ralike možete pogledati u sekciji Appendix A. Subversion for CVSUsers [1]
2) Instalacija
Pre nego što krenemo sa objašnjenjima i praktičnim primerima, najpre ćemo instalirati Subversion klient i server. Instalacijom jednog paketa (dev-util/subversion) dobijamo svn server i svn klient.
emerge -va subversion
Portage će sve ostalo da završi bez naše interakcije.
3) KonfiguracijaKonfiguracija sistema koja je ponučena nakon istalacije je uglavnom zadovoljavajuća, osim u slučajevima kada je potrebno da za neke servere dodatno podesimo ponašanje klijenta, recimo u slučajevima rada sigurnog svn klijenta (svn+ssh) ili slučajevima kada dodano podešavavamo server. Podešavanja ćemo naći u našem home direktorijumu ~/.subversion. Pogledajmo kako izlegeda sadržaj tog direktorijuma nakon istalacije.
dedal .subversion .:
total 24K
drwxr-xr-x 3 root root 61 Feb 8 00:39 .
drwx------ 9 root root 4.0K Feb 14 13:53 ..
-rw-r--r-- 1 root root 4.2K Feb 7 16:34 README.txt
drwx------ 5 root root 63 Feb 7 16:34 auth
-rw-r--r-- 1 root root 4.7K Feb 8 00:39 config
-rw-r--r-- 1 root root 3.2K Feb 7 16:34 servers
./auth:
total 0
drwx------ 5 root root 63 Feb 7 16:34 .
drwxr-xr-x 3 root root 61 Feb 8 00:39 ..
drwxr-xr-x 2 root root 84 Feb 15 14:08 svn.simple
drwxr-xr-x 2 root root 6 Feb 7 16:34 svn.ssl.server
drwxr-xr-x 2 root root 6 Feb 7 16:34 svn.username
./auth/svn.simple:
total 8.0K
drwxr-xr-x 2 root root 84 Feb 15 14:08 .
drwx------ 5 root root 63 Feb 7 16:34 ..
-rw-rw-r-- 1 root root 144 Feb 15 14:08 b01325dbbd4ffcf30a0a4435fed5adf9
-rw-r--r-- 1 root root 162 Feb 8 12:07 b09ce17ac39e1e411dd526cb2798af40
./auth/svn.ssl.server:
total 0
drwxr-xr-x 2 root root 6 Feb 7 16:34 .
drwx------ 5 root root 63 Feb 7 16:34 ..
./auth/svn.username:
total 0
drwxr-xr-x 2 root root 6 Feb 7 16:34 .
drwx------ 5 root root 63 Feb 7 16:34 ..
dedal .subversion
Ukratko, ~/.subversion/config je mesto gde podešavamo klient stranu dok u fajlu ~/.subversion/servers podešavamo server. Ovi enkriptovani nazivi fajlova (b01325dbbd4ffcf30a0a4435fed5adf9) su ustvari mesta gde se se "kriju" podaci koji su nam potrebni za uspešno ostvarivanje sesije sa svn serverom tj. korisničko ime, adresa servera, skladište na koje se kačimo i sl. O ovim fajlovima će biti više reči u odeljku Bezbednost klienta u daljem tekstu.
4) Korišćenje klienta
Konačno prelazimo na upustva kako najefektivnije koristiti SVN klient. U sledećim primerima ćemo raditi sa "živim" informacijama za naš server, kako bi korisnici istog lakše shvatili kako treba koristiti skladište u kome se nalazi projekat za prevod Gentoo dokumentacije.
4.1) Spuštanje trenutne verzije projektaPre svega ćemo morati da odredimo mesto za rad, recimo da je to naš home direktorijum, i dovući ternutnu verziju projekta,
cd ~/
svn co --username korisnik svn:Authentication realm: <svn:Password for 'korisnik':
A gentoo-srbija.org/prevod
A gentoo-srbija.org/prevod/trunk
A gentoo-srbija.org/prevod/trunk/en
A gentoo-srbija.org/prevod/trunk/en/handbook
A gentoo-srbija.org/prevod/trunk/sr
A gentoo-srbija.org/prevod/trunk/sr/guide.xsl
A gentoo-srbija.org/prevod/trunk/sr/handbook
A gentoo-srbija.org/prevod/trunk/sr/handbook/guide.xsl
A gentoo-srbija.org/prevod/trunk/sr/handbook/hb-install-amd64-kernel.xml
A gentoo-srbija.org/prevod/trunk/sr/handbook/hb-install-amd64-medium.xml
A gentoo-srbija.org/prevod/trunk/sr/handbook/images
A gentoo-srbija.org/prevod/trunk/sr/handbook/images/gbot-s.gif
A gentoo-srbija.org/prevod/trunk/sr/handbook/images/gtop-s.jpg
A gentoo-srbija.org/prevod/trunk/sr/handbook/images/gridtest.gif
A gentoo-srbija.org/prevod/trunk/sr/handbook/images/line.gif
A gentoo-srbija.org/prevod/trunk/sr/handbook/images/netraverse-gentoo.gif
A gentoo-srbija.org/prevod/trunk/sr/handbook/css
A gentoo-srbija.org/prevod/trunk/sr/handbook/css/main.css
A gentoo-srbija.org/prevod/trunk/sr/handbook/handbook-amd64.xml
A gentoo-srbija.org/prevod/trunk/sr/handbook/hb-install-amd64-bootloader.xml
A gentoo-srbija.org/prevod/trunk/sr/handbook/hb-install-amd64-disk.xml
A gentoo-srbija.org/prevod/trunk/sr/images
A gentoo-srbija.org/prevod/trunk/sr/images/gbot-s.gif
A gentoo-srbija.org/prevod/trunk/sr/images/gtop-s.jpg
A gentoo-srbija.org/prevod/trunk/sr/images/gridtest.gif
A gentoo-srbija.org/prevod/trunk/sr/images/line.gif
A gentoo-srbija.org/prevod/trunk/sr/images/netraverse-gentoo.gif
A gentoo-srbija.org/prevod/trunk/sr/css
A gentoo-srbija.org/prevod/trunk/sr/css/main.css
A gentoo-srbija.org/prevod/trunk/sr/distcc.xml
A gentoo-srbija.org/prevod/trunk/sr/cross-compiling-distcc.xml
A gentoo-srbija.org/prevod/branches
Checked out revision 7.
Ako na kraju adrese dodamo /prevod onda će projekat biti dovučen u direktorijum ~/prevod umesto u ~/gentoo-srbija.org/prevod, ovo ostaje na korisniku da odluči kako će povući projekat iz skladišta. Kod dovlačenja projekta iz skladišta je vrlo važno znati da se fajlovi uvek nalaze u diretorijumu trunk i da se poslovi uvek obavljaju na fajlovima koji se nalaze u tom direktorijumu. Takoče je vrlo važno znati da se direktorijumi koji počinju sa .svn nikada ne brišu niti se, na bilo koj način, njihov sadržaj menja. U njima se nalaze automatski generisani fajlovi i direktorijumi koji sadrže neophodne informacije za komunikaciju klienta i svn servera. Prema tome najbolje je zaboraviti da oni uopšte postoje.
Ovo kompletno spuštanje projekta u lokalni direktorijum se samo jednom radi i to prvi put. Svaki sledeći put kada želimo da pokupimo poslednju verziju i izmene koristićemo sledeću komandu
cd ~/gentoo-srbija.org
svn --update
Na ovaj način ćemo povući samo izmene za projekat i možemo početi sa radom.
4.2) Korišćenje opcije lockPre početka svake izmene na fajlu, trebalo bi da osiguramo fajl, tačnije da zaključamo, kako ne bi neki drugi korisnik u mečuvremenu preuzeo isti fajl i vršio izmene. Na ovaj način ćemo zaobići konflikt da neko izmeni fajl dok mi radimo na njemu. Recimo da želimo da preuzmemo fajl cross-compiling-distcc.xml, prvo ćemo se informisati o trenutnom stanju tog fajla.
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn info cross-compiling-distcc.xml svn status cross-compiling-distcc.xml
Ako ustanovimo da je fajl na kome smo hteli da radimo slobodan, zaključaćemo ga i ostavićemo poruku zašto smo ga zaključali i koliko će fajl biti u takvom stanju ili šta god pronačemo da je zgodno napisati kao informaciju drugom korisniku.
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn lock cross-compiling-distcc.xml -m "zaključao sam fajl dok ne završim prevod"
Kad završimo sa izmenama, fajl (izmene za fajl) ćemo poslati nazad u skladište i otključati ga.
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn ci -m "ispravio sam greške u kucanju na liniji 202"
svn unlock cross-compiling-distcc.xml
4.3) Slanje fajlova u skladište
Iz ovog primera vidimo komandu za slanje prepravljene verzije u skladište. Nije potrebno navoditi naziv fajla koji je prepravljen, dovoljno je da uradite commit i on će prepoznati koji je fajl izmenjen i poslaće ga u skladište.
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn ci -m "ispravio sam greške u kucanju na liniji 202"
Kada budemo želeli da dodamo neki novi fajl uradićemo to ovako. Pretpostavlja se da imamo već spremljen fajl za slanje koji se nalazi u /usr/local/prevod pod imenom novi.xml. Radimo sledeće:
cd ~/gentoo-srbija.org/prevod/trunk/sr
cp /usr/local/prevod/novi.xml novi.xml
svn add novi.xml
svn ci -m "dodat prevedeni fajl novi.xml"
4.4) Pomoćne komande klienta (informacije, pregled logova, razlike itd.)
U ovom odeljku će biti objašnjene neke od pomoćnih komandi za proveru i informacije fajlova koji se već nalaze po podverzijom.
Ako želimo da se informišemo koje je izdanje poslednje, ko je poslednji menjao fajlove i sl. koristimo
cd ~/gentoo-srbija.org
svn info
ili ako nam je potrebna informacija o samo jednom fajlu koristimo
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn info cross-compiling-distcc.xml
ako želimo da pregledamo promene izmeču verzija ili da generišemo diff fajl
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn diff -r 6:7 distcc.xml svn diff -r 6:7 distcc.xml > distcc.xml.diff
Ako nas zanimaju detaljne informacije o nekom fajlu koristimo opciju log
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn log distcc.xml svn log --verbose distcc.xml
5) Bezbednost klienta
Kao što je bilo reči u odeljku za konfiguraciju, fajl za enkodiranim nazivom b01325dbbd4ffcf30a0a4435fed5adf9 je u fajl u kome se nalaze podaci o jednoj SVN sesiji i on se automatski generiše posle prve konekcije sa SVN serverom.
Pošto je većina servera konfigurisana tako da uglavnom zahteva od korisnka autorizaciju, što bi bilo izuzetno iritirajuće da posle svake akcije korisnik unosi lozinku, ovaj fajl zluži da zapamti korisnika i njegovu lozinku, adresu servera za odrečeni projekat i slično. Pogledate fajl izutra videćete o čemu se radi.
Ako bi neko na neki način uzeo kopiju ovog fajla, mogao bi da uspostavi komunikaciju sa SVN serverom i da se identifikuje kao da je on Vi, što znači da će moći da menja, dodaje i briše fajlove na serveru a sve se akcije loguju sa Vašim imenom (nadimkom), što je katastrofalan akt. Verovatnoća da se ovo desi je mala, ali ako koristite računar na kome je uglavnom jedan korisnik ulogovan i na tom računaru koristite klienta, možda ne bi bilo loše koristiti opciju --no-auth-cache. Ovoj opcijom kažemo klijentu da ne generiše fajl za autentifikaciju, tj. ~/.subversion/auth/svn.simple/b01325dbbd4ffcf30a0a4435fed5adf9, pri uspostavljanju konekcije. Primer kako to izgleda:
cd ~/gentoo-srbija.org/prevod/trunk/sr
svn commit -F poruka.txt --no-auth-cache
Authentication realm: <svn:Username: zen
Password for 'zen':
Adding novi.xml
Transmitting file data .
Committed revision 8.
U ovom slučaju lozinka nije uhvaćena i za sledeće slanje u skladište server traži lozinku.
svn delete novi.xml
svn commit -F poruka.txt
Authentication realm: <svn:Username: zen
Password for 'zen':
Ovo je opcija za izuzetno paranoične korisnike, i ako zaista neko ovo želi da koristi može dodati sledeće u fajl ~/.subversion/config
[auth]
store-auth-creds = no
i na ovaj način će keširanje biti isključeno.
Stranicu poslednji put izmenio: z10n 2006-05-04 21:07:52
|