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í  místo, kde jsou uloženy různé verze souborů,  historické.

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í  místo, kde jsou uloženy různé verze souborů,  historické."— 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í  místo, kde jsou uloženy různé verze souborů,  historické verze - revize  dle platformy/zákazníka - varianty  sdílení kódu mezi vývojáři a mezi počítači  zdroj pro sestavení aplikací,  zdroj pro "manažerské" statistiky,

3 Lokální správa verzí  víceuživatelské systémy s terminály, sdílený diskový prostor,  SCCS (1972),  rcs (1982), 1. přednáška - správa verzí vývoj revizí včetně vytvoření jedné samostatné větve (branch)

4 Centralizovaná správa verzí 1. přednáška - správa verzí 4 úložiště/ repository server desktop x Alice - pracovní adresář (workspace) Bob - pracovní adresář (workspace) Joel - pracovní adresář (workspace)

5 Centralizovaná správa verzí  CVS – Concurent Version System (1990),  nadstavba na rcs,  Subversion (2000),  Rational ClearCase (1992),  Visual SourceSafe (1994),  Perforce (1995),  Team Foundation Server (2005),  přednáška - správa verzí 5 komerční

6 Decentralizovaná správa verzí 1. přednáška - správa verzí 6 centrální úložiště/ repository centrální úložiště/ repository server desktop x Alice - pracovní adresář (workspace) Bob - pracovní adresář (workspace) Joel - pracovní adresář (workspace) Alice repository Joel repository Bob repository

7 Distribuovaná správa verzí  výhody  lze definovat více variant workflow,  vývojáři obvykle dělají lokální commity po menších změnách,  snazší vytváření větví,  není single-point-of-failure,  rychlejší přístup pro některé operace,  nevýhody  složitější,  jedno úložiště = jeden projekt, 1. přednáška - správa verzí 7

8 Decentralizovaná správa verzí  BitKeeper (1998),  Darcs (2002),  Bazaar (2005),  Git (2005),  Mercurial (2005), 1. přednáška - správa verzí 8

9 Základní operace  stažení poslední verze z úložiště,  stažení „starší“ verze z úložiště,  odeslání změn na server,  zobrazení souborů z konkrétní revize,  zobrazení rozdílů mezi verzemi souborů,  slučování změn od více uživatelů (merge) a řešení kolizí,  vytváření a slučování větví, 1. přednáška - správa verzí 9

10 Zjišťování změn v pracovišti  před odesláním změn do úložiště musí uživatel označit přidané/odebrané soubory/adresáře,  IDE většinou označují za uživatele,  některé soubory se nepřenášejí do úložiště !!!  předdefinové v klientech: *.bak, *.*~, *.*#  lze rozšířit přes property svn:ignore  vhodné *.class, *.ctxt 1. přednáška - správa verzí 10

11 Revize  revize – verze souboru či stavu projektu* v čase,  číslování revizí:  každý soubor nezávisle (CVS),  globální číslování jednotlivých změn v úložišti (Subversion),  kryptografickým otiskem celého stavu projektu (Git, Mercurial), *) pro stav projektu se používá pojem changeset 1. přednáška - správa verzí 11

12 Značky (tags)  Značka (tag) – důležitý milník, stav konfigurace v určitém čase, např. subversion revize: subversion-1.7.8revize: pmd-releases/4.30d3cba2a2e (5611) pmd-releases/ dcde0edb5 (6736) pmd-releases/5.0.16a8d7c3bcc (6862) 1. přednáška - správa verzí 12 Git

13 Větvení  každý projekt obvykle má:  Kmen (trunk) – hlavní vývojová linie,  Větve (branches) – paralelní vývojová linie, 1. přednáška - správa verzí 13

14 Workflow – organizace práce  jak se pracuje s větvemi, jak začlenit změny od jednotlivých vývojářů,  vývojář sám na jednom počítači,  vývojář sám na více počítačích,  více vývojářů rovnocenných přístupem,  jeden/několik vývojářů schvaluje příspěvky od ostatních,  stabilní a vývojová větev,  větve pro jednotlivé klienty,  větvení pro překladatele,  přednáška - správa verzí 14

15 1. přednáška - správa verzí 15 server pevný bod desktop x Alice - pracovní adresář (workspace) Bob - pracovní adresář (workspace) Joel - pracovní adresář (workspace) úložiště (repository)

16 16 © 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

17 17 © 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, ....

18 18 © Luboš Pavlíček1. přednáška - správa verzí Struktura úložiště  pro uživatele emuluje strukturu adresáře,  v úložišti může být více projektů,  globální číslování revizí,  větve, značky:  vytvořením podadresáře vhodného jména, copy  obecná operace copy,

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

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

21 21 © Luboš Pavlíček1. přednáška - správa verzí Pracoviště - workspace mohu promíchat pracoviště dvou projektů?

22 22 © 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 obvykle poslední revizi z úložiště,  update – aktualizuje se lokální pracoviště na poslední verzi v úložišti,  commit (check-in) – odeslání změněných prvků/souborů do úložiště,  export  import

23 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), 23 © Luboš Pavlíček1. přednáška - správa verzí musíte svn říct, že přibyl/ubyl soubor/adresář ?

24 ú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

25 Operace na pracovišti i úložišti II revert – vrácení úprav na pracovišti, pomocí revert se vrátím ke stavu souboru z revize (z posledního update). checkout vybrané revize – chci starší revizi, cleanup – oprava pracoviště do stabilního stavu po nedokončených operacích, - někdy cleanup nepomůže: smazat „pracoviště“ a udělat nový checkout, 25 © Luboš Pavlíček1. přednáška - správa verzí

26 Konflikty – přístup Copy-Modify-Merge 1 26 © 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

27 Konflikty – přístup Copy-Modify-Merge 2 27 © 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

28 28 © 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„ (merge) 2.resolve – nastavení příznaku, že konflikt vyřešen, 3.commit 4.update 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

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

30 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 30 © Luboš Pavlíček1. přednáška - správa verzí

31 Konflikty – použití zámků (lock) 31 © 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

32 Properties - vlastnosti  pro adresář/soubor lze nastavovat properties, které ovlivňují chování klienta svn 32 © Luboš Pavlíček1. přednáška - správa verzí

33 Property svn:ignore – ignorovat soubory  svn:ignore  seznam souborů, které se nemají přenášet do úložiště,  např. Thumbs.db *.class *.ctxt  klienti mají v sobě obvykle zabudovaný předpis, jaké soubory mají ignorovat – každý klient různý  33 © Luboš Pavlíček1. přednáška - správa verzí

34 Property svn:keywords  používají se následující keywords: Date, Revision, ID, Author, URL, Header  v souboru „Pokus.java“ je použijete:  nastavíte property svn:keywords pro soubor „Pokus.java“ na “Date Author”  provedete commit: 34 © Luboš Pavlíček1. přednáška - správa verzí Author of last commit: $Author$: Date of last commit : $Date$: Author of last commit: $Author$: Date of last commit : $Date$: Author of last commit: $Author: pavlicek $: Date of last commit : $Date: :17: (po, 21 IX 2009) $: Author of last commit: $Author: pavlicek $: Date of last commit : $Date: :17: (po, 21 IX 2009) $:

35 PROTOKOLY, KITSCM.VSE.CZ © Luboš Pavlíček 1. přednáška - správa verzí 35

36 Přístup k úložišti svn - protokoly  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 36 © Luboš Pavlíček1. přednáška - správa verzí

37 37 © Luboš Pavlíček1. přednáška - správa verzí 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/

38 Subversion - verze  hlavní verze svn nejsou zpětně kompatibilní,  automatická konverze na novou strukturu,  pokud máte pracoviště ve verzi 1.6, tak po přístupu klientem 1.7 se změní struktura pracoviště. Klient verze 1.6 již nemůže přistupovat k pracovišti. klientverze svn (řádkový klient)1.8 NetBeans a novější1.7 NetBeans 7.4 a novější1.8 s klientem Subclipse 1.10 (pro Eclipse)1.8 Intellij IDEA 13 a novější1.8 TortoiseSVN (GUI pro windows) © Luboš Pavlíček1. přednáška - správa verzí

39 Nejčastější chyby  odeslání změn jen v části projektu,  chybí odvaha vyřešit kolize,  jména souborů/adresářů:  v úložišti se rozlišují malá/velká písmena,  nelze stáhnout do Windows !!! 39 © Luboš Pavlíček1. přednáška - správa verzí

40 40 © Luboš Pavlíček1. přednáška - správa verzí Více projektů v úložišti / adventura pexeso trunk tags branches verze 0.1 verze 0.2 verze 0.3 / trunk branches adventrua pexeso adventura verze 0.1 verze 0.2 tags

41 ROZDÍLOVÉ INFORMACE, ÚSPORA MÍSTA © Luboš Pavlíček 1. přednáška - správa verzí 41

42 Ukládání informací na serveru  snaha o úsporu místa,  pokud se soubor mezi revizemi nezmění, neukládá se nová kopie,  komprimace souborů,  obsahově adresovatelný systém souborů,  ukládání pouze rozdílů mezi revizemi 1. přednáška - správa verzí 42

43 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í 43 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

44 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í 44 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

45 Git, Mercurial  nepoužívají se rozdílové soubory,  ke každému souboru se počítá otisk (hash) SHA1  pokud v cíli je soubor se stejným otiskem, tak se nepřenáší, neukládá podruhé,  uloží se pouze metainformace, 1. přednáška - správa verzí 45

46 46 © 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 svnbook.red-bean.com svnbook.red-bean.com   Chacon, S.: „Pro Git“. česká verze on-line na knihy.nic.czknihy.nic.cz


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í  místo, kde jsou uloženy různé verze souborů,  historické."

Podobné prezentace


Reklamy Google