Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

4IT115 1. přednáška Správa verzí Luboš Pavlíček. 1. přednáška - správa verzí 2 Cíle správy verzí  centralizované místo, kde jsou uloženy různé verze.

Podobné prezentace


Prezentace na téma: "4IT115 1. přednáška Správa verzí Luboš Pavlíček. 1. přednáška - správa verzí 2 Cíle správy verzí  centralizované místo, kde jsou uloženy různé verze."— Transkript prezentace:

1 4IT přednáška Správa verzí Luboš Pavlíček

2 1. přednáška - správa verzí 2 Cíle správy verzí  centralizované místo, kde jsou uloženy různé verze SW a souvisejících dat,  historické verze - revize  dle platformy/zákazníka - varianty  řízený přístup pro udržení konzistence,  zdroj pro sestavení aplikací a nepřetržitou integraci,  poskytovat aktuální data jednotlivým vývojářům  zdroj pro "manažerské" statistiky

3 Nástroje pro verzování  Ruční verzování  adresářová struktura  dohody a konvence pro označení verzí v názvech,  často se používá pro dokumenty, modely,...  Systémy na správu verzí  podpora více uživatelů,  podpora porovnávání rozdílů,  ukládání všech verzí v zapouzdřené formě,  např. rcs, CVS, Subversion, Perforce, Visual Sourcesafe, ClearCase,  wiki - pro textové informace © Luboš Pavlíček 1. přednáška - správa verzí 3

4 4 CVS (Concurrent Versioning System)  sdílené úložiště, soukromé pracovní prostory,  zjišťování stavu prvků, rozdílů proti úložišti,  podpora více uživatelů (optimistický přístup k zamykání souborů),  lokální či vzdálené úložiště,  nadstavba nad rcs,  příkazová řádka, grafické nadstavby,  integrace do mnoha IDE a nástrojů

5 5 © Luboš Pavlíček1. přednáška - správa verzí Subversion  nástupce CVS  nové možnosti:  přejmenování, verzování adresářů,  atomický commit,  binární diff,  možnost přístupu přes webdav (přístupová práva),  způsob práce a příkazy podobné CVS

6 6 © Luboš Pavlíček1. přednáška - správa verzí SVN: nástroje  příkazová řádka,  samostatné  TortoiseSVN  integrované do vývojového prostředí  Eclipse, NetBeans,...  správa přes web, statistiky  např. chora, websvn, wsvn,  integrace do nástrojů pro sestavování  ant,  Hudson, ....

7 Eclipse a NetBeans  nutno doinstalovat plugin,  subclipse  subclipse – subclipse.tigris.org  subversive –  NetBeans 6.5 Subversion 1.5 for Windows  doinstalovat plugin „Subversion 1.5 for Windows“  nainstalovat si řádkového klienta 7 © Luboš Pavlíček1. přednáška - správa verzí

8 Přístup k úložišti - protokol  přes protokol http/https https://kitscm.vse.cz/svn/user/pavlicek  přes speciální protokol svnserve (tcp/3690) svn://host.example.com/project1  přímo na souborovém systému (file:) file:///var/svn/user/pavlicek  kombinace ssh+file svn+ssh://host.example.com/repos/project 8 © Luboš Pavlíček1. přednáška - správa verzí

9 9 kitscm – přístup k úložištím  úložiště pro jednotlivce  úložiště pro projekty a skupiny https://kitscm.vse.cz/svn/user/uživ_jméno/ https://kitscm.vse.cz/svn/user/xabcd01/ https://kitscm.vse.cz/svn/user/pavlicek/ https://kitscm.vse.cz/svn/user/pavlicek/adventura/trunk https://kitscm.vse.cz/svn/proj/4it115_po_0915_p_109 https://kitscm.vse.cz/svn/proj/4it251_po_1245_p_107 https://kitscm.vse.cz/svn/proj/pexeso/ https://kitscm.vse.cz/svn/proj/clovece_nezlob_se/

10 10 © Luboš Pavlíček1. přednáška - správa verzí kitscm - přístup k úložišti  plnohodnotný přístup - pomocí klienta k SVN:  řádkový klient - subversion.tigris.org  tortoiseSVN  Eclipse + plugin Subclipse, popř. Subversive  NetBeans využívá se řádkový klient nebo plugin „SubVersion 1.5 for Windows“  přístup pouze ke čtení:  pomocí www prohlížeče - pouze poslední verzi,  pomocí aplikace na prohlížení - konkrétně WebSVN Doporučení: činnost pouze v trunku (vlastní vývoj): používat Eclipse či NetBeans činnost mimo trunk (s více projekty, vytvoření tagu/větve, spojování větví,...): samostatný klient, popř. v IDE, kontrola obsahu na serveru: přes webové rozhraní

11 1. přednáška - správa verzí 11 Jednotlivé části systému (subversion) pracoviště

12 1. přednáška - správa verzí 12 Úložiště - repository úložiště Úložiště (databáze projektu, repository) = sdílený datový prostor, kde jsou uloženy všechny prvky konfigurace projektu,

13 13 © Luboš Pavlíček1. přednáška - správa verzí Struktura úložiště  obvykle adresářová,  v úložišti více projektů,  každý projekt obvykle má:  Kmen (trunk) – hlavní vývojová linie,  Větve (branches) – paralelní vývojová linie  Značky (tags) – důležitý milník, stav konfigurace v určitém čase, např. pmd pmd pmd pmd …….

14 14 © Luboš Pavlíček1. přednáška - správa verzí Struktura úložiště / projekt1 trunk tags verze 0.1 verze 0.2 verze 0.3 branches projekt2 /adventura/trunk logika textoveRozhrani grafika TextoveRozhrani.java Hra.java Vec.java Mistnost.java

15 15 © Luboš Pavlíček1. přednáška - správa verzí počítač vývojářeúložiště Pracoviště - workspace c:\svn projekt1 projekt2 trunk tags branches / projekt1 trunk tags branches projekt2 trunk tags branches

16 16 © Luboš Pavlíček1. přednáška - správa verzí Revize čas

17 17 © Luboš Pavlíček1. přednáška - správa verzí Subversion  "skrytý" adresář.svn  v něm údaje o změnách v pracovišti  práce s revizemi  lze stáhnout konkrétní revize (jeden soubor z revize či všechny),  porovnávat soubory v jednotlivých revizích,  některé soubory se nepřenášejí!!!  předdefinové v klientech: *.bak, *.*~, *.*#  lze rozšířit přes property svn:ignore  pro jednotlivé adresáře,  vhodné *.class, *.ctxt

18 18 © Luboš Pavlíček1. přednáška - správa verzí Operace mezi pracovištěm a úložištěm  check-out – vytvoří lokální pracoviště a zkopíruje prvky z úložiště  update – zkopíruje se kopie prvků do lokálního pracoviště,  commit (check-in) – uložení změněných prvků do úložiště,  export  import

19 Operace na pracovišti i úložišti I add – začlenění souboru/adresáře delete – smazání souboru či adresáře mkdir – vytvoření adresáře move – přesun/přejmenování souboru copy (branch/tag) – vytvoření kopie souboru/adresáře na pracovišti či v úložišti, též vytvoření větve či značky proplist, propset, propdel – správa vlastností (properties), 19 © Luboš Pavlíček1. přednáška - správa verzí

20 úložiště projekt 1projekt 2 kmenznačka 1značka 2 značka 1kmen počítač 1 pracoviště počítač 2 pracoviště kmen en kmen en kmen

21 Operace na pracovišti i úložišti II revert – vrácení úprav na pracovišti cleanup – oprava pracoviště do stabilního stavu po nedokončených operacích, lock – nastavení zámku, unlock – zrušení zámku, resolved – nastavení příznaku, že konflikt je vyřešen, 21 © Luboš Pavlíček1. přednáška - správa verzí

22 Konflikty – přístup Copy-Modify-Merge 1 22 © Luboš Pavlíček1. přednáška - správa verzí A AA HarrySally Dva uživatelé si zkopírují soubor A A’A’A”A” HarrySally Oba soubor editují A”A” A’A’A”A” HarrySally Sally odešle změny na server A”A” A’A’A”A” Harry má smůlu - HarrySally X commit

23 Konflikty – přístup Copy-Modify-Merge 2 23 © Luboš Pavlíček1. přednáška - správa verzí A”A” A’ A”A”A” HarrySally Harry provede update A”A” A*A*A”A” HarrySally Harry sloučí soubory (merge) A*A* A*A*A”A” HarrySally Harry odešle sloučenou verzi A*A* A*A*A*A* Sally si též zaktualizuje HarrySally update commitupdate

24 24 © Luboš Pavlíček1. přednáška - správa verzí Konflikty - Copy-Modify-Merge 3  při operacích update a commit,  více souborů po update: 1.ručně vyřešit konflikt do souboru "Hra.java" 2.resolve – nastavení příznaku, že konflikt vyřešen, 3.update  též lze zrušit změny - revert Hra.java- správná verze Hra.java.mine- moje úpravy Hra.java.r1- počáteční stav u mne Hra.java.r2- stav v úložišti

25 Operace na pracovišti i úložišti III lock – nastavení zámku, unlock – zrušení zámku,  optimistický zámek  lze editovat bez získání zámku,  nelze provést commit, pokud někdo jiný má zámek,  pesimistický zámek  bez získání zámku nelze provést žádné úpravy,  k souborům s požadavkem na pesimistický zámek se nastavuje vlastnost (property) svn:needs-lock 25 © Luboš Pavlíček1. přednáška - správa verzí

26 Konflikty – použití zámků (lock) 26 © Luboš Pavlíček1. přednáška - správa verzí A AA HarrySally Dva uživatelé si zkopírují soubor A AA HarrySally Harry požádá o zámek A A’A’A HarrySally Sally požádá o zámek A’A’ A’A’A Harry odešle a odemkne HarrySally X commitLOCK UNLOCK

27 27 © Luboš Pavlíček1. přednáška - správa verzí Struktura individuálního úložiště / adventura trunk tags textovaVerze grafickaVerze adventuraZaklad trunk tags trunk logika Mistnost.java Vec.java Hra.java textoveRozhrani TextoveRozhrani.java grafika

28 28 © Luboš Pavlíček1. přednáška - správa verzí Doporučení: práce doma a ve škole  doma s připojením k internetu  poprvé provést checkout trunku,  po změnách commit,  při vytváření značek:  v samostatném pomocném adresáři,  checkout celého úložiště,  zkontrolovat obsah trunku,  vytvořit značku,  commit na server,  zrušit adresář,  ve škole - vytvořit adresář na lokálním disku, po práci zrušit,

29 29 © Luboš Pavlíček1. přednáška - správa verzí Doporučení: práce se soubory v pracovišti  přidání nového souboru/adresáře - nutno add (klient obvykle navrhne)  náhodné zrušení souboru - operací revert lze obnovit soubor z úložiště či z předchozích revizí,  úmyslné zrušení souboru - přes klienta !!!,  přejmenování/přesun souboru – přes klienta,

30 Uložení rozdílových informací 1  Weave (tkanina)  ukládají se jednotlivé řádky a čísla revizí, ve kterých se nachází,  používá se v SCCS, pomalé,  lze snáz a lépe automatizovat merge, 1. přednáška - správa verzí 30 Z4 A1, 2, 3, 4 X2 B1, 2, 3, 4 Y3 ABAB AXBAXB ABYABY ZABZAB vývoj řádek v souboru uloženo v souboru v úložišti

31 Uložení rozdílových informací 2  Delta  rozdíly mezi dvěma verzemi souboru,  různé algoritmy (diff, xdelta, zdelta, …), 1. přednáška - správa verzí 31 public class Hello { public static void main(String [] args) { System.out.println("Hello world"); } public class Hello { public static void main(String [] args) { System.out.println("Ahoj svete"); } 3c3 < System.out.println("Hello world"); --- > System.out.println("Ahoj svete"); Rozdílový soubor z programu diff

32 Distribuovaná správa verzí  výhody  rychlejší přístup,  není single-point-of- failure,  snazší vytváření větví, zkušebních verzí  nevýhody  zabírá hodně místa na stanici,  v úložišti by měl být pouze jeden projekt,  chybí podpora v IDE, 1. přednáška - správa verzí 32

33 Distribuovaná správa verzí 2  Některé servery: darcs – napsaný v Haskellu, git – používá se pro jádro linuxu, Bazaar – používá se pro vývoj Ubuntu, mercurial – projekty NetBeans, OpenJdk, OpenSolaris, Xine, … 1. přednáška - správa verzí 33

34 34 © Luboš Pavlíček1. přednáška - správa verzí Literatura  Pilato C.M., Collins-Sussman B., Fitzpatrick B.W.: Version Control with Subversion. On-line na 


Stáhnout ppt "4IT115 1. přednáška Správa verzí Luboš Pavlíček. 1. přednáška - správa verzí 2 Cíle správy verzí  centralizované místo, kde jsou uloženy různé verze."

Podobné prezentace


Reklamy Google