Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Opšte / Kako koristiti SVN konzolni klijent

Kako koristiti SVN konzolni klijent

by Goran Mekić last modified Nov 23, 2007 02:02 AM
Kada upoznate osnove, jednostavno je. Pa haj'mo na osnove!

Uvod

Subversion je program za verzioniranje. Urađen je kao klijent-server varijanta, ali će ovde biti objašnjeno samo korišćenje klijentskog dela. Pretpostavka je da je paket subversion ispravno i da imate negde repozitorijum za isprobavanje. Sledeća tabela lista moguće akcije svn komande

  • co (check out) - inicijalno skidanje repozitorijuma na lokalni disk
  • up (update) - ažuriranje repozitorijuma na lokalnom disku tako da odgovara izmenama na serveru
  • add - dodavanje fajla u repozitorijum (ovo ne znači da će fajl biti prisutan i na serveru - za to je potreban ci)
  • ci (check in) - upload izmena sa lokalnog diska na server
  • diff (difference) - prikaz razlika između dve revizije repozitorijuma
  • log - prikaz poruka za svaki upload izmena

Ukoliko imate neki repozitorijum, evo primera koji ilustruje gornje komande. Prvo treba da inicijalno skinete repozitorijum sa servera:

# svn co svn://neki-server/repozitorijum

Potom uđite u direktorijum repozitorijuma na lokalnom disku i dodajte novi fajl:

# cd repozitorijum
# touch neki-novi-fajl
# svn add neki-novi-fajl

Upload izmena sa lokalnog diska. Kada otkucate ovu komandu, otvoriće Vam se editor (editor po želji birate postavkom promenljive okruženja EDITOR) u koji je veoma korisno upisati komentar koji ilustruje izmenu koju ste napravili, pa makar ona bila i trivijalna (kasniji pregled logova olakšava pretraživanje):

# svn ci

Pretpostavimo sada da duže vreme niste radili na projektu (godišnji odmor?) i da se vraćate na njega. U repozitorijumu je mnogo izmena i sve želite da ih prenesete na svoj lokalni disk. Uradite sledeće. Uđite u direktorijum gde se nalazi lokalni repozitorijum i pokrenite sledeću komandu:

# svn up

Sve izmene koje su načinjene od Vašeg poslednjeg ažuriranja repozitorijuma će biti skinute. Primetite da svn co treba da pokrenete samo prvi put. Svaki naredni put kada Vam treba ažuriranje lokalnog repozitorijuma, radi se svn up.


Konflikti

Kada na projektu radi više ljudi, javljaju se konflikti u fajlovima. Naime, zamislite situaciju kada radite sa još jednim kolegom (naravno, projekti obično uključuju više ljudi, ali zbog jednostavnosti pretpostavimo da Vas je dvoje) i kolega upload-uje fajl na kome Vi upravo radite. Dobra praksa je da uvek pre svn ci uradite svn up, čisto da se uverite da su fajlovi na Vašem disku iz zadnje revizije (najnoviji mogući). Kada uradite to, može doći do konflikta. SVN se trudi da ih izbegava koliko god je moguće tako što ako vidi izmene fajla ne dešava se konflikt ukoliko su izmenjene linije različite (broj menjane linije, ne sadržaj iste). U koliko to nije slučaj, dolazi do konflikta. U tom slučaju, u originalnom fajlu ćete imati naznake gde se konflikt javio i to na sledeći način. Svaki deo fajla koji uzrokuje konflikt je označen sa >>>>>>. Takve oznake ćete videti na dva mesta za svaki konflikt. Naime, jedno je oznaka revizije koja je u konfliktu sa Vašim izmenama, a drugo su Vaše izmene. Način rešavanja konflikta zavisi isključivo od Vas.


Ova revizija ne valja, vraćaj staru

Pretpostavimo da znate broj revizije koja je zadnja dobro radila (pretpostavimo da je to 200). Uđite u direktorijum gde se nalazi repozitorijum i uradite sledeće:

# svn up -r 200


Revizije se razlikuju, ali kako da znam koliko

Pretpostavimo da želite da vidite razlike između Vaših izmena i aktuelne revizije na serveru. To se postiže sledećom komandom:

# svn diff

U koliko želite da vidite izmene u odnosu na neku stariju reviziju, koristite -r:

# svn diff -r 100

A ako želite da vidite razlike između revizije 100 i revizije 200, komanda je sledeća:

# svn diff -r 100:200


Pregledanje logova

Kada želite da pregledate log poruke, postoje 2 zgodne varijante. Jedna je gledanje log poruka za sve revizije u nazad, a druga gledanje log poruka za određeni fajl. U koliko se ne prosledi opcija -r <broj>, gledaju se log poruke od zadnje revizije u nazad. Gledanje svih revizija od poslednje izmene u nazad:

# svn log

U koliko dodate -v gornjoj komandi, videćete i koji fajlovi su menjani:

# svn log -v

Ako želite da vidite određene revizije (recimo, 100):

# svn log -r 100

ili od jedne do druge revizije (recimo, 100-200):

# svn log -r 100:200

Slično je za određeni fajl. Naravno, taj fajl mora biti u repozitorijumu (urađen svn add i svn ci):

# svn log neki/fajl

I u ovoj varijanti postoji robusniji ispis poruka:

# svn log neki/fajl -v

Kao i ograničenje na revizije:

# svn log neki/fajl -r 100:200


Nekoliko korisnih stvari

Ukoliko želite da otkrijete koja revizija je izmenila neki fajl, ili još bitnije, neku liniju u određenom fajlu, kombinujte svn diff i svn log. Gore su opisane opcije koje su dovoljne da skontate kako. Ukoliko se konflikt javi, probajte da nađete zašto, gde i kada se javio. Mnogo je korisnije da odmah "ukorite" kolege :o). Na kraju, svn help je mesto odakle sam ja "pokrao" svoje znanje. Ne ustručavajte se da ga koristite.

Document Actions