WWW.GENTOO-SRBIJA.ORG
...95% of all computer errors occur between chair and keyboard (TM) Četvrtak, 08 Januar/2009  
 » SADRŽAJ
 › Uvod
 › Performanse
 › Mirori
 › Linkovi
 › Download
 › Mailing lista
 › Kontakt
 » PROFIL
» šifra
zapamti me
  Registracija
 » PRETRAGA
 » NOVI PAKETI
mail-filter/MailScanner-4.70.7.1: Free Anti-Virus and Anti-Spam Filter
dev-util/tmake-2.12: A Cross platform Makefile tool
dev-perl/Filesys-Df-0.92: Disk free based on Filesys::Statvfs
app-shells/bash-completion-20060301: Programmable Completion for bash
app-portage/gentoolkit-0.2.4.2-r1: Collection of administration scripts for Gentoo
app-crypt/pgpdump-0.26: A PGP packet visualizer
app-admin/bcfg2-0.9.6: Bcfg2 is a configuration management tool.
net-misc/dhcpcd-4.0.7: A fully featured, yet light weight RFC2131 compliant DHCP client
net-misc/dhcpcd-4.99.6: A fully featured, yet light weight RFC2131 compliant DHCP client
net-misc/dhcpcd-4.0.6: A fully featured, yet light weight RFC2131 compliant DHCP client
 » WEBMAIL
 » GENTOO-PORTAGE
And we're back
 »  SVN_klient
Home | (How To)?
1 Upustvo za Korišćenje klijenta sistema podverzija (SVN client)
2 Instalacija
3 Konfiguracija
4 Korišćenje klienta
4.1 Spuštanje trenutne verzije projekta
4.2 Korišćenje opcije lock
4.3 Slanje fajlova u skladište
4.4 Pomoćne komande klienta (informacije, pregled logova, razlike itd.)
5 Bezbednost klienta


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) Konfiguracija

Konfiguracija 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 # ls -Rlah
.:
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 projekta

Pre 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://gentoo-srbija.org/gentoo-srbija.org
Authentication realm: <svn://gentoo-srbija.org:3690> Gentoo Srbija Repository
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 #ili skraćeno svn up


Na ovaj način ćemo povući samo izmene za projekat i možemo početi sa radom.


4.2) Korišćenje opcije lock

Pre 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 #ispisuje detaljne informacije o fajlu
svn status cross-compiling-distcc.xml #ispisuje samo status fajla



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 #<-- pregled
svn diff -r 6:7 distcc.xml > distcc.xml.diff #<-- generisanje diff fajla izmeču verzije 6 i 7



Ako nas zanimaju detaljne informacije o nekom fajlu koristimo opciju log



cd ~/gentoo-srbija.org/prevod/trunk/sr
svn log distcc.xml # prikazuje kompletan log željenog fajla
svn log --verbose distcc.xml # prikazuje kompletan log željenog fajla sa detaljnijim informacija o akcijama koje su izvedene.



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://gentoo-srbija.org:3690> Gentoo Srbija Repository
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://gentoo-srbija.org:3690> Gentoo Srbija Repository
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