Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Správa verzí Luboš Pavlíček
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, 1. přednáška - správa verzí
3
vývoj revizí včetně vytvoření jedné samostatné větve (branch)
Lokální správa verzí víceuživatelské systémy s terminály, sdílený diskový prostor, SCCS (1972), rcs (1982), 1.1 1.2 1.3 2.1 2.2 1.3.1 vývoj revizí včetně vytvoření jedné samostatné větve (branch) 1. přednáška - správa verzí
4
Centralizovaná správa verzí
úložiště/ repository server x desktop Alice - pracovní adresář (workspace) Bob - pracovní adresář (workspace) Joel - pracovní adresář (workspace) 1. přednáška - správa verzí
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), ... komerční 1. přednáška - správa verzí
6
Decentralizovaná správa verzí
centrální úložiště/ repository server Joel repository Alice repository Bob repository desktop x Alice - pracovní adresář (workspace) Bob - pracovní adresář (workspace) Joel - pracovní adresář (workspace) 1. přednáška - správa verzí
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í
8
Decentralizovaná správa verzí
BitKeeper (1998), Darcs (2002), Bazaar (2005), Git (2005), Mercurial (2005), 1. přednáška - správa verzí
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í
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í
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í
12
Značky (tags) Značka (tag) – důležitý milník, stav konfigurace v určitém čase, např. subversion revize: subversion revize: pmd-releases/4.3 0d3cba2a2e (5611) pmd-releases/ dcde0edb5 (6736) pmd-releases/ a8d7c3bcc (6862) Git 1. přednáška - správa verzí
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í
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, ... 1. přednáška - správa verzí
15
x úložiště (repository) pevný bod server desktop
Alice - pracovní adresář (workspace) Bob - pracovní adresář (workspace) Joel - pracovní adresář (workspace) 1. přednáška - správa verzí
16
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 © Luboš Pavlíček 1. přednáška - správa verzí
17
SVN: nástroje TortoiseSVN příkazová řádka, samostatné
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, .... © Luboš Pavlíček 1. přednáška - správa verzí
18
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, obecná operace copy, © Luboš Pavlíček 1. přednáška - správa verzí
19
Struktura úložiště / adventura trunk tags verze 0.1 verze 0.2
pexeso trunk tags branches verze 0.1 verze 0.2 verze 0.3 Hra.java Vec.java Mistnost.java TextoveRozhrani.java © Luboš Pavlíček 1. přednáška - správa verzí
20
Pracoviště - workspace
počítač vývojáře úložiště c:\svn pexeso adventura trunk tags branches / pexeso adventura trunk tags branches © Luboš Pavlíček 1. přednáška - správa verzí
21
Pracoviště - workspace
ve skrytém adresáři .svn jsou: adresa úložiště, číslo revize, ... verze souborů stažené z úložiště , běžné adresáře: v něm dělá uživatel úpravy, tj. obsahuje aktuální verze souborů, mohu promíchat pracoviště dvou projektů? © Luboš Pavlíček 1. přednáška - správa verzí
22
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 svn nefunguje jako dropbox – nic automaticky nepřenáší © Luboš Pavlíček 1. přednáška - správa verzí
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), musíte svn říct, že přibyl/ubyl soubor/adresář ? © Luboš Pavlíček 1. přednáška - správa verzí
24
úložiště projekt 1 projekt 2 kmen kmen kmen kmen en značka 1 značka 2
počítač 1 počítač 2 kmen kmen en pracoviště pracoviště
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, © Luboš Pavlíček 1. přednáška - správa verzí
26
Konflikty – přístup Copy-Modify-Merge 1
Dva uživatelé si zkopírují soubor Oba soubor editují A A A A A’ A” Harry Sally Harry Sally Sally odešle změny na server Harry má smůlu - A” A” commit commit X A’ A” A’ A” © Luboš Pavlíček 1. přednáška - správa verzí Harry Sally Harry Sally
27
Konflikty – přístup Copy-Modify-Merge 2
Harry provede update Harry sloučí soubory (merge) A” A” update A’ A” A” A* A” Harry Sally Harry Sally Harry odešle sloučenou verzi Sally si též zaktualizuje V subversion se po sloučení A* A* commit update A* A” A* A* © Luboš Pavlíček 1. přednáška - správa verzí Harry Sally Harry Sally
28
Konflikty - Copy-Modify-Merge 3
při operacích update a commit, více souborů po update: ručně vyřešit konflikt do souboru "Hra.java„ (merge) resolve – nastavení příznaku, že konflikt vyřešen, commit 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 © Luboš Pavlíček 1. přednáška - správa verzí
29
© Luboš Pavlíček 1. 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 distribuované systémy na správu verzí nepodporují zámky, © Luboš Pavlíček 1. přednáška - správa verzí
31
Konflikty – použití zámků (lock)
Dva uživatelé si zkopírují soubor Harry požádá o zámek A A LOCK A A A A Harry Sally Harry Sally Sally požádá o zámek Harry odešle a odemkne Při commitu se automaticky uvolňuje zámek A A’ LOCK commit X UNLOCK A’ A A’ A © Luboš Pavlíček 1. přednáška - správa verzí Harry Sally Harry Sally
32
Properties - vlastnosti
pro adresář/soubor lze nastavovat properties, které ovlivňují chování klienta svn © Luboš Pavlíček 1. přednáška - správa verzí
33
Property svn:ignore – ignorovat soubory
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ý © Luboš Pavlíček 1. 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: 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) $: © Luboš Pavlíček 1. přednáška - správa verzí
35
Protokoly, KITSCM.VSE.CZ
© Luboš Pavlíček 1. přednáška - správa verzí
36
Přístup k úložišti svn - protokoly
přes protokol http/https 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 © Luboš Pavlíček 1. přednáška - správa verzí
37
kitscm – přístup k úložištím
úložiště pro jednotlivce úložiště pro projekty a skupiny © Luboš Pavlíček 1. přednáška - správa verzí
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. klient verze 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) Intellij IDEA 13 a novější TortoiseSVN (GUI pro windows) © Luboš Pavlíček 1. 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 !!! © Luboš Pavlíček 1. přednáška - správa verzí
40
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 trend posledních let: jedno úložiště == jeden projekt © Luboš Pavlíček 1. přednáška - správa verzí
41
Rozdílové informace, úspora místa
© Luboš Pavlíček 1. přednáška - správa verzí
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í
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, Z 4 A 1, 2, 3, 4 X 2 B 1, 2, 3, 4 Y 3 A B A X B A B Y Z A B vývoj řádek v souboru uloženo v souboru v úložišti 1. přednáška - správa verzí
44
Uložení rozdílových informací 2
Delta rozdíly mezi dvěma verzemi souboru, různé algoritmy (diff, xdelta, zdelta, …), 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"); } V úložišti je počáteční verze souboru a poté rozdílové soubory mezi jednotlivými verzemi. 3c3 < System.out.println("Hello world"); --- > System.out.println("Ahoj svete"); 1. přednáška - správa verzí 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í
46
Literatura Pilato C.M., Collins-Sussman B., Fitzpatrick B.W.: Version Control with Subversion. On-line na svnbook.red-bean.com Chacon, S.: „Pro Git“. česká verze on-line na knihy.nic.cz © Luboš Pavlíček 1. přednáška - správa verzí
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.