SVN

URL kde bezi svn server

svn://192.168.241.3/var/lib/svnrepos/embedded

Pouzivany klienti

  • integrovany klient v eclipse
  • kdesvn - Prioritne odporucany pre OS Linux
  • esvn

System vyvoja

Vyvojovy branch

Vytvara sa v pripade potreby novej funkcionality a platia nasledovne pravidla:

  1. Sluzia v pripade vacsich prerabok
  2. Dorabania novej funkcionality (v pripade ze dorabka trva viac ako den, dva)
  3. Mergovanie prebieha po implementovanie novej funkcionality a aspon zakladnom otestovani konkretnej funkcionality
  4. Je dolezite dbat na to aby nova funkcionalita nepokazila uz implementovane a funkcne veci


Release branch

Vytvara sa kazdy alebo kazdy druhy mesiac a platia nasledujuce pravidla:

  1. Nedoraba sa do nich nova funkcionalita,
  2. Vzdy je podporovany jeden, posledny release. V specifickych pripadoch, ak je potrebne vykonat bugfix do stasieho release-u, je nutne odsuhlasenie veduceho teamu a zabezpecenie upravy bugu aj v najnovsom release-e.,
  3. Plati na nich ak je to potrebne, cislovanie branchov (stredne cislo buildu podla cislovanie branchov),
  4. Obsahuje len opravy chyb (sporne situacie urci veduci),
  5. Je dolezite pravidelne (denne) mergovanie do trunku, aby sa bugfix prejavil v trunku.

Organizovanie zdrojovych kodov v svn

Korenovy adresar svn repozitara sa nachadza: svn://192.168.241.3/var/lib/svnrepos/embedded

Clenenie repozitara

Repozitar sa z logickeho hladiska deli na viacero casti:

  • Dopravne aplikacie a pevne spojene aplikacne kniznice
  • Ine aplikacie ako su automaty, pomocne programy a pod.
  • Zdielane kniznice


Z pohladu udrzby na:

  • hlavna vetva nachadzajuca sa v adresari “trunk”
  • vyvojove a release branche nachadzajuce sa v adresaroch “branches”

Dopravne aplikacie

Korenovy adresar dopravnych aplikacii: svn://192.168.241.3/var/lib/svnrepos/embedded

Repozitar obsahuje aplikacie a pevne spojene kniznice aplikacnej logiky:

  1. EOnboardComputer
  2. EAppCore
  3. ESlave
  4. ETicketIssueLogic

Kniznice

Korenovy adresar kniznic: svn://192.168.241.3/var/lib/svnrepos/embedded

Adresar je podla zamerania kniznic dalej deleny na celky:

  • Common kniznice - maju spolocnu logiku pre vsetky aplikacia a platformy (windows, linux 2.4 aj linux 2.6)
  • UI kniznice - disponuju kniznicami, ktore definuju UI aplikacii
  • Devices kniznice - obsahuju kniznice postavene nad systemom EDeviceSystem alebo DeviceCommon. V pprevaznej vacsine su to ovladace zariadeni

Praca s klientom kdesvn

  • import zdrojovych kodov z disku
    1. otvorime si databazu SVN svn://192.168.241.3/var/lib/svnrepos/embedded nie working copy
    2. v menu Subversion/General klikneme na import folders into current a najdeme cestu k priecinku , stlacime ok a pridame komentar


  • pridavanie suborov/adresarov
    1. kliknite pravym tlacitkom na subor/adresar a v menu zvolte “Add selected files/dirs” - status by sa mal zmenit z “Not versioned” na “Locally added”
    2. tuto zmenu je potrebne este potvrdit - znova kliknite pravym tlacitkom na subor/adresar a v menu zvolte “Commit”


  • ziskanie zdrojovych kodov zo svn:
    1. v klientskom programe zvolte File→Open
    2. vlozte URL kde bezi svn server: svn://192.168.241.3/var/lib/svnrepos/embedded
    3. nasledne nalistujte projekt ktory chcete stiahnut
    4. kliknite pravym na priecinok projektu a zvolte: CheckOut current repository path
    5. do editboxy “Select target directory” zvolte cestu kde stiahnut projekt na disk
    6. po stiahnuti projektu sa zvoleny projekt vyberie ako aktualny


  • pouzivanie svn:
    1. v klientskom programe zvolte File→Open
    2. z disku nalistujte projekt na ktorom chcete pracovat a potvrdte volbu
    3. zelenym su zvyraznene veci krore su novsie v databaze svn - vy na disku mate starsiu verziu - stiahnutie novsich veci volva “Update to head”
    4. cervenym su veci ktore ste na disku zmenili - zaslanie vlastnych zmien do databazy svn “Commit”


  • vytvaranie branchu:
    1. skopirovat(mysou drag and drop pretiahnut adresar trunk do adresara branches) adresar trunk z projektu do adresara branches
    2. vytvorenu kopiu premenovat(klavesa F2) - nazov branchu
    3. dolezite je pridat poznamku pri vyrvarani branchu aby sa vedeli reviziu vzniku branchu - poznamka v tvare “created branch 0903”
    4. ak je to vyvojovy branch, pridat jeho popis do popis_vyvojovych_branch-ov


alebo je mozne vytvorit branch pomocou kdesvn: “Subversion/General/Copy” (nad trunkom zobrazenom v pravom okne),


alebo pomocou prikazu:

svn copy svn://192.168.241.3/var/lib/svnrepos/embedded/Apps/VehicleSystem/trunk \
         svn://192.168.241.3/var/lib/svnrepos/embedded/VehicleSystem/branches/1311 \
         -m "created release 1311 from trunk"

Rucne Mergovanie - old, nove pravidla v sekcii pravidla

novsie pravidla mergovania : pravidla a poznatky z mergovania projektov

mergovanie zmien vo vetve branchu do trunku http://svnbook.red-bean.com/en/1.2/svn.ref.svn.c.merge.html

svn merge -r N:M SOURCE[@REV] [WCPATH] mergovanie zmien od verzie N po verziu M do WCPATH is the working copy path that will receive the changes. Default value is ”.”

priklad:
aktualny adresar je stiahnuty adresar trunk daneho projektu
svn merge -r 1305:1750 svn://192.168.241.3/var/lib/svnrepos/embedded/Apps/VehicleSystem/branches/1311

kde 1305 je cislo revision od ktorej zacal branche a 1750 je aktualne revizia(HEAD) - revizia po ktoru chceme mergovat

Nasledne po tomto kroku je potrebne otvorit a skontrolovat vysledok(working copy) v klientovi(kdesvn) a po vizualnej kontrole sa vysledky commitnut do SVN komit sa prevazda s poznamkou “Merged revision 1750-1750 from branch 0903” Tato poznamka je potrebna pre pripad, ked sa este opravia nejake chyby v tomto branchu, ktory uz bol mergovany.

priklad comitu z command line
svn ci -m "Merged revision 1750-1750 from branch 0903"

Informacie o historii mergeov sa daju pozriet aj z properties mergeinfo:

cd FareSystem/branches/0903
svn propget svn:mergeinfo .
/trunk:341-390

alebo:

cd FareSystem/branches/0903
svn mergeinfo svn://192.168.241.3/var/lib/svnrepos/embedded/Apps/VehicleSystem/trunk

blizsie info na: http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.branchmerge.basicmerging.mergeinfo

Undo

Ked sa niekomu podari omylom commintnut nieco co nechce a chce aby sa to v svnku vratilo do povodneho stavu. Je mozne pouzit svn merge na vratenie lokalnej kopi a potom commitnut lokalne zmeny do svn-ka. Jedine co treba je vytvorit spatny rozdiel (reverse difference). Da sa to cez specifikovanie revizie: –revision 303:302, alebo –change -303.

Dokumentacia ku SVN:

Tree conflict

potrebne v problematickom adresari pustit svn cleanup (pred tym mat nainstalovane svn: sudo apt-get install subversion)

Project 'locked' problem

V situaciach, ked kdesvn hlasi, ze woking copy, nad ktorou pracujete je locked a nepomaha cleanup, je mozne vyriesit situaciu rucnym odstranenim locknutych suborov prikazom:

find . -name 'lock' -exec rm -v {} \;
 
howto/svn.txt · Last modified: 2014/01/20 19:21 by 172.16.1.9
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki