Správa verzí Luboš Pavlíček.

Slides:



Advertisements
Podobné prezentace
PLAYBOY Kalendar 2007.
Advertisements

PKML.
© 2000 VEMA počítače a projektování spol. s r. o..
Stodůlky 1977 a 2007 foto Václav Vančura, 1977 foto Jan Vančura, 2007.
Vizuální Systém Fotbal
ŘEŠENÍ PRO TÝMOVOU INFRASTRUKTURU
Města ČR – orientace na mapě
Zpracování informací a znalostí Další přístupy k vyhledávání textových dokumentů Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního inženýrství.
Vizuální Systém Fotbal
Ing. Jan Mittner MySQL Workbench 2. Základy práce s databází 3. Subversion 2.
*Zdroj: Průzkum spotřebitelů Komise EU, ukazatel GfK. Ekonomická očekávání v Evropě Březen.
Český Internet po (uši v?) krizi Marek Antoš. snímek |datum |dokument | 1. Internetové prostředí 2.
Ing. Jan Mittner Rozšíření modelu 2. Vazba 1:n 3. Vazba m:n 2.
PROGRAM PRO VÝUKU T ČLÁNKU
Personální managament
Student: Ing. Olga Minaříková školitel: doc.akad.soch. Miroslav Zvonek, PhD. srpen 2009.
Téma 3 ODM, analýza prutové soustavy, řešení nosníků
Tomáš NETERDA 1961 Sportovní kariéra : plavecké třídy ZŠ Komenského gymnázium Dašická plavecká škola
Dynamické rozvozní úlohy
Násobíme . 4 = = . 4 = = . 4 = = . 2 = 9 .
Uživatelé, Role, Schémata
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
Výzkumy volebních preferencí za ČR a kraje od
Téma: SČÍTÁNÍ A ODČÍTÁNÍ CELÝCH ČÍSEL 2
Vizualizace projektu větrného parku Stříbro porovnání variant 13 VTE a menšího parku.
Vzdělávací materiál / DUMVY_32_INOVACE_02B14 Příkazový řádek: obsah souborů PŘÍKLADY AutorIng. Petr Haman Období vytvořeníLeden 2013 Ročník / věková kategorie3.
Výukový matriál byl zpracován v rámci projektu OPVK 1
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
Animace Demo Animace - Úvodní animace 1. celé najednou.
MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA reg. č.: CZ.1.07/1.4.00/ Základní škola, Šlapanice, okres Brno-venkov, příspěvková organizace Masarykovo nám.
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
MAGNET – NOVÁ ŘADA PROGRAMŮ TOPCON
4IT 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.
Zábavná matematika.
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Jazyk vývojových diagramů
Čtení myšlenek Je to až neuvěřitelné, ale skutečně je to tak. Dokážu číst myšlenky.Pokud mne chceš vyzkoušet – prosím.
52_INOVACE_ZBO2_1364HO Výukový materiál v rámci projektu OPVK 1.5 Peníze středním školám Číslo projektu:CZ.1.07/1.5.00/ Název projektu:Rozvoj vzdělanosti.
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
TRUHLÁŘ II.ročník Výrobní zařízení Střední škola stavební Teplice
DĚLENÍ ČÍSLEM 7 HLAVOLAM DOPLŇOVAČKA PROCVIČOVÁNÍ
Fyzika 2 – ZS_4 OPTIKA.
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
PHP – Základy programování
MS PowerPoint Příloha - šablony.
Téma: ABSOLUTNÍ HODNOTA CELÝCH ČÍSEL 2
1 Celostátní konference ředitelů gymnázií ČR AŘG ČR P ř e r o v Mezikrajová komparace ekonomiky gymnázií.
Technické kreslení.
Úkoly nejen pro holky.
Petr Brůha  udělat průzkum využití moderních vývojových nástrojů na Kivu  doplňuji průzkum Jana Štěbetáka z dokumentu.
Ant Připravil: Ing. Jan Kolomazník. strana 2 Proč vznikl Potřeba sestavovat komplexní Nezávisle na platformě Popis založený na xml Spouštění různých úloh.
Celní služby 2000 Radek Sedláček TranSoft a.s Radek Sedláček TranSoft a.s
Aplikace DVB-T Český Telecom, a.s.. 2 Agenda DVB-T MHP Platforma ČTc DVB-T MHP Platforma ČTc – aplikace Shrnutí cílů společnsti Český Telecom, a.s.
Přednost početních operací
DĚLENÍ ČÍSLEM 5 HLAVOLAM DOPLŇOVAČKA PROCVIČOVÁNÍ Zpracovala: Mgr. Jana Francová, výukový materiál EU-OP VK-III/2 ICT DUM 50.
2 Ing. Jan Keprt Centrální správa uživatelů 3 Jak to bylo dosud Bylo třeba nastavení uživatelů provést zvlášť, v každém modulu samostatně. Uživatel si.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Gymnázium, Broumov, Hradební 218
TRUHLÁŘ I.ročník Výrobní zařízení Střední škola stavební Teplice
Práce se šablonami v MS Word 2007
Autor: Ondřej Šimeček Verze: 1.1.3
Porovnání výroby a prodejů vozidel ve světě
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.1 Lucián Piller Intranet HR.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Srovnání systémů řízení projektů Vypracovala: Jitka Procházková.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY.
Připravil: Ing. Jan Kolomazník, Ph.D.
Transkript prezentace:

Správa verzí Luboš Pavlíček

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í

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í

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í

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í

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í

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í

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

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í

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í

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í

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

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í

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í

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í

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í

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í

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í

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í

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í

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í

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í

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í

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

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í

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

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

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í

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

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í

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

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í

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í

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: 2009-09-21 14:17:57 +0200 (po, 21 IX 2009) $: © Luboš Pavlíček 1. přednáška - správa verzí

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

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

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

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í

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í

Rozdílové informace, úspora místa © Luboš Pavlíček 1. přednáška - správa verzí

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í

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í

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

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í

Literatura Pilato C.M., Collins-Sussman B., Fitzpatrick B.W.: Version Control with Subversion. On-line na svnbook.red-bean.com http://revctrl.org/ Chacon, S.: „Pro Git“. česká verze on-line na knihy.nic.cz © Luboš Pavlíček 1. přednáška - správa verzí