====== 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: - Sluzia v pripade vacsich prerabok - Dorabania novej funkcionality (v pripade ze dorabka trva viac ako den, dva) - Mergovanie prebieha po implementovanie novej funkcionality a aspon zakladnom otestovani konkretnej funkcionality - 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: - **Nedoraba sa do nich nova funkcionalita**, - **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.**, - Plati na nich ak je to potrebne, cislovanie branchov (stredne cislo buildu podla [[libraryversion:libraryversion|cislovanie branchov]]), - Obsahuje len opravy chyb (sporne situacie urci veduci), - 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: - EOnboardComputer - EAppCore - ESlave - 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 - otvorime si databazu SVN [[svn://192.168.241.3/var/lib/svnrepos/embedded]] nie working copy - v menu Subversion/General klikneme na import folders into current a najdeme cestu k priecinku , stlacime ok a pridame komentar \\ * pridavanie suborov/adresarov - 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" - tuto zmenu je potrebne este potvrdit - znova kliknite pravym tlacitkom na subor/adresar a v menu zvolte "Commit" \\ * ziskanie zdrojovych kodov zo svn: - v klientskom programe zvolte File->Open - vlozte URL kde bezi svn server: [[svn://192.168.241.3/var/lib/svnrepos/embedded]] - nasledne nalistujte projekt ktory chcete stiahnut - kliknite pravym na priecinok projektu a zvolte: CheckOut current repository path - do editboxy "Select target directory" zvolte cestu kde stiahnut projekt na disk - po stiahnuti projektu sa zvoleny projekt vyberie ako aktualny \\ * pouzivanie svn: - v klientskom programe zvolte File->Open - z disku nalistujte projekt na ktorom chcete pracovat a potvrdte volbu - zelenym su zvyraznene veci krore su novsie v databaze svn - vy na disku mate starsiu verziu - stiahnutie novsich veci volva "Update to head" - cervenym su veci ktore ste na disku zmenili - zaslanie vlastnych zmien do databazy svn "Commit" \\ * vytvaranie branchu: - skopirovat(mysou drag and drop pretiahnut adresar trunk do adresara branches) adresar trunk z projektu do adresara branches - vytvorenu kopiu premenovat(klavesa F2) - nazov branchu - dolezite je pridat poznamku pri vyrvarani branchu aby sa vedeli reviziu vzniku branchu - poznamka v tvare "created branch 0903" - ak je to vyvojovy branch, pridat jeho popis do [[libraryversion:libraryversion#popis_vyvojovych_branch-ov| 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 : [[coding:rules_projects| 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: ===== http://svnbook.red-bean.com/en/1.2/index.html ===== 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 {} \;