Version Control Systems (Systémy na správu verzí)

Podobné dokumenty
GIT hands-on. Mgr. Šimon Tóth. 12. dubna () GIT hands-on 12. dubna / 25

Verzovací systémy. Pořádek především!

1 Nástroje pro správu verzí. 1.1 Pojmy:

SCM = Source Code Management software, základní typologie rozdělení je podle počtu a umístění základního úložiště kódu(=repository) na:

Obecné informace o cvičeních

Základní pojmy verzování souborů. SVN - Subversion vybrané pokročilé vlastnosti. Správce verzí. Repositár

Přehled témat. Základní pojmy

Úvod do verzovacích systémů

Správa verzí souborů na cvičení

VCS CVS - Concurrent Version System SVN - Subversion Distribuované verzovací systémy DVCS Verzování. Základní pojmy verzování souborů

PŘIDÁNÍ SOUBORŮ DO OBLASTI PŘIPRAVENÝCH ZMĚN

Práce se systémem Subversion (SVN)

Profesionální služby kolem Linuxu

Workflow sdíleného projektu ve VisualParadigm

9. Archivace a verzování svn

Git aneb správa verzí trochu jinak

Evoluce deploye Od FTP po automatický deploy

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE

Øízený pøeklad - make

Subversion pro každého

Open source a komerční linuxové distribuce Libor Pecháček

Home Media Server. Instalace aplikace Home Media Server do poèítaèe. Správa mediálních souborù. Home Media Server

Radek Krej í. NETCONF a YANG NETCONF. 29. listopadu 2014 Praha, IT 14.2

Tipy a triky nejenom v shellu nejenom pro programátory

O Apache Derby detailněji. Hynek Mlnařík

Zpracování textù poèítaèem

2007 Nokia. V¹echna práva vyhrazena. Nokia, Nokia Connecting People a Nseries jsou ochranné známky nebo registrované ochranné známky spoleènosti

BI-AWD. Administrace Webového a Databázového serveru Instalace webového serveru Apache httpd

Java/QE Akademie - Osnova

Git. The information manager from hell. Robin Obůrka

OPTIMALIZACE FUNKCE GENETICKÝM ALGORITMEM

Linuxový kernel v posledních letech

Rovnováha kapalina{pára u binárních systémù

Okam¾ité zprávy. Nokia N76-1

Monitorování sítě pomocí OpenWrt

DPC-D218ID. Dveřní stanice pro 2D systém videovrátných. Uživatelský manuál

INSTALACE SW V GNU/LINUXU

Pro Git. Edice CZ.NIC

Project management. Příprava projektu Zahájení High level plánování. Vykonávání Detailní plánování Vykonávání Řízení a monitorování


Obsah. Windows 95 je vaše. Windows si pamatují, kam co patøí. O knize 1

Vladimír

Open Source Programování

Hlavní obrazovka displeje je rozdìlena do pìti základních monitorovacích oken a tlaèítka slou ícího ke vstupu do nastavení zaøízení.

Ant aneb Ferda Mravenec, práce všeho druhu

Projekt JetConf REST API pro vzdálenou správu

GroupWise 6.5 for Linux

Cisco IOS TCL skriptování využití SMTP knihovny

Úvod do Linuxu SŠSI Tábor 1

Maturitní témata z předmětu Programování a databázové systémy. pro šk. rok 2012/2013

Návod pro vzdálené p ipojení do sít UP pomocí VPN pro MS Windows 7

w w w. u l t i m u m t e c h n o l o g i e s. c z Infrastructure-as-a-Service na platformě OpenStack

VIRTUALBOX GUEST ADDITIONS


Návod pro administraci aplikace EdgeFrame HelpDesk

Příloha č. 2 - Integrace SpiritÚAP do ESB Jihočeského kraje

Publikování. Zaèínáme. Odesílání souborù. Publikování

Obsah. Úvod 9. Co kniha není 9 Cíl knihy 9 Pro koho je kniha určena 10 Doprovodné CD 10. KAPITOLA 1 Stručný přehled 11

Restaurace-ng. documents/dmetqytlor37kpeje5dax/download/restaurace_aplikace.part1.

Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6

ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU

HDCVI DVR Uživatelský manuál. Uživatelský manuál záznamové zařízení Dahua & BCS HDCVI

Srovnání Linuxu a BSD z pohledu jádra. Jan Dyrczyk

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Informační systém pro rezervaci pokojů hotelu SPORT

Představení společnosti a produktů ESET ESET software, spol. s r.o. Petr Heřman

Instalace nvidia Optimus v Ubuntu 14.04

Matematika v programovacích

Vývoj software pro Linuxové distribuce. Installfest Praha,

Ukládání a archivace dat

Server. Software serveru. Služby serveru

Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

Jak funguje GNU/Linux

Seznámení s open source vývojem a open source řešeními pro mobilní zařízení

Setkání uživatelů 2012

Otevřený katastr (OK)

Instalaèní pøíruèka programu PC Suite. CS Issue 1

Automatizace správy linuxové infrastruktury pomocí Katello a Puppet LinuxDays

Push to talk. Nokia N76-1

Řešení pro audit činnosti administrátorů UNIX/Linux serverů

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Distribuovaný SSH honeypot

Architektura aplikací v Seznam.cz

Manuál Kentico CMSDesk pro KDU-ČSL

Cobbler, Puppet, Func

Operační systémy 1. Přednáška číslo Souborové systémy

Metody zabezpečeného přenosu souborů

KIV/ZSWI. Roz²i ování studentského informa ního serveru. Bc. Michal Bryxí. 18. února Západo eská Univerzita v Plzni


Využití mobilního klienta při správě inženýrských sítí. Petr Skála Pontech s.r.o.

téma: Formuláře v MS Access

modrana: flexibilní navigační systém Martin Kolman

99 % všech desktopů na platformě MS Windows

Exportní rozhraní. EuroNet Media s.r.o.

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Softwarové in enýrství Úvodní studie PRODUKÈNÍ SYSTÉM PRO IP TELEFONNÍ SPOLEÈNOST

Instalace a konfigurace OpenAdmin tool na M$ a Linuxu

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Transkript:

Version Control Systems (Systémy na správu verzí) Software Conguration Management (SCM) Systems Jan Outrata 2007

O èem to je - základy spravování verzí zachovat historii vývoje (procházet, návrat k pøedchozím verzím, kdy, kdo, co zmìnil) spolupráce více vývojáøù, pøístup k poslední vývojové verzi vývoj více paralelních vìtví sí»ová práce - zasílání zmìn (patchù) po síti nejen programátorský kód! - dokumentace, data (binární),... repozitáø (repository) skladi¹tì v¹ech verzí + metadata z nìj pracovní adresáø ukládání do repozitáøe - DB, pro ka¾dý soubor soubor historie, balíky se zmìnami (changeset) lokální nebo na serveru Jan Outrata: Version Control Systems (Systémy na správu verzí) 2

pøístup k repozitáøi - lokální, server, jednoduché web. rozhraní, kombinace (SSH, WebDAV) revize (commit, changeset) stav projektu v urèitém èase (mezi zmìnami) nebo seznam zmìn vedoucích k (mezi)stavu (changeset) identikace a popis - numerická, symbolická (oprava-chyby), hash buï pro ka¾dý soubor zvlá¹» (CVS, bk) nebo pro celý projekt (SVN) øe¹ení koniktù pøi vytváøení nové revize - zmìny v repozitáøi i v prac. kopii, které nelze automaticky slouèit, slouèit ruènì nebo vybrat jednu vìtev (branch) práce s více vìtvemi zároveò (stabilní, vývojová) problémy se sluèováním (merge) vìtví (aktuální výzkum) cherrypicking - výbìr jen nìkterých zmìn z vìtví Jan Outrata: Version Control Systems (Systémy na správu verzí) 3

Jak se jednotlivé systémy li¹í - hlavní pøístupy vývojový model: centralizovaný jeden hlavní repozitáø, pracovní kopie projektu (ne repozitáøe!) model klient/server propagace zmìn z pracovní kopie do hlavního repozitáøe = push problém havárie repozitáøe numerická identikace revizí, pø. CVS, SVN decentralizovaný (distribuovaný) klonování hlavního repozitáøe do lokálních repozitáøù (+ pracovní kopie z nich), nezávislý paralelní lokální vývoj (vìt¹í svoboda vývojáøù, komerènì ve rmách naopak nevýhoda) propagace zmìn z lokálních repozitáøù do hlavního = push Jan Outrata: Version Control Systems (Systémy na správu verzí) 4

sta¾ení zmìn z lokálních repozitáøù do hlavního = pull hlavní repozitáø je jen synchronizaèní bod vývojáøù anebo bez nìj jen jednoduchá výmìna zmìn (patchù) havárie hlavního repozitáøe neohro¾uje vývoj systém komplikovanìj¹í (sluèování zmìn) identikace revizí unikátní napøíè lokálními a hlavním repozitáøem (hash, pro odkazování staèí prvních pár znakù) ukládání revizí: stavy celého projektu - jednoduché, hodnì místa, obtí¾nìj¹í získat jednotlivé zmìny, pø. CVS, git zmìny mezi stavy - jednoduchá výmìna jednotlivých zmìn, ménì místa, slo¾itìj¹í (vytváøení stavù), pø. Darcs kombinace Jan Outrata: Version Control Systems (Systémy na správu verzí) 5

Prakticky - operace nad repozitáøem, práce s ním inicializace/vytvoøení repozitáøe cvs -d/repo init snvadmin create /repo --fs-type fsfs svk admin create /repo darcs initialize git-init-db, cg-init bzr init/init-repo /repo hg init /repo vlo¾ení nového adresáøe/projektu (import) - popis cvs import adr. svn/svk import adr. file:///repo darcs add -r adr git-add, cg-add bzr add adr hg add adr export z repozitáøe cvs export svn export darcs dist git-tar-tree, cg-export Jan Outrata: Version Control Systems (Systémy na správu verzí) 6

bzr export hg export/archive/bundle \pracovní cyklus": vyta¾ení prac. kopie (checkout) - adresáø repozitáøe (CVS,.svn, darcs,.bzr,.hg (jeden),...) cvs co -D"datum" -r"revize" svn co -r revize/{datum} git checkout, cg-fetch bzr co -r revize hg co revize aktualizace prac. kopie (update) - konikty cvs up -D svn up -r darcs pull git-pull, cg-update bzr up hg up revize pøidání/smazání/kopie/pøesun souboru/adresáøe Jan Outrata: Version Control Systems (Systémy na správu verzí) 7

cvs add/delete svn add/delete/copy/move darcs add/remove/mv git-add/git-mv, cg-add/cg-rm bzr add/mkdir/mv/remove hg add/remove/rename kontrola zmìn (status) pøed commitem cvs status svn status darcs whatsnew git-status, cg-status bzr st -r revize hg st zmìny mezi revizemi/prac. kopií (di) cvs diff -D -D svn diff -r revize:revize darcs diff --from-patch --to-patch git-diff id..id, cg-diff id..id bzr di -r revize..revize hg diff -r revize -r revize anotace - u ka¾dého øádku ve které revizi a kým naposledy zmìnìn Jan Outrata: Version Control Systems (Systémy na správu verzí) 8

cvs annotate svn annotate darcs annotate git-whatchanged bzr ann -r revize hg annotate -r revize undo (revert) - zru¹it zmìny v pracovní kopii cvs unedit svn revert darcs revert git-revert, cg-restore bzr revert -r revize hg revert -r revize zahrnutí zmìn (commit) - popis, konikty dal¹í: cvs ci svn ci darcs record git-commit, cg-commit bzr ci -m popis hg ci -m popis seznam zmìn (log) - od revize k revizi, data k datu,... Jan Outrata: Version Control Systems (Systémy na správu verzí) 9

cvs log svn log darcs changes git-log, cg-log bzr log hg log oznaèení revize (tag) - pou¾ití místo identikace revize, pø. stable cvs tag svn copy darcs tag git-mktag, cg-tag bzr nick hg tag vytvoøení nové vìtve cvs tag -b VETEV svn copy darcs get url git-branch bzr branch hg clone sluèování vìtví (merge) - zmìny mezi vìtvemi do prac. kopie, konikty, cherrypicking Jan Outrata: Version Control Systems (Systémy na správu verzí) 10

cvs up -j VETEV -j VETEV svn merge file:///repo@revize file:///repo@revize darcs pull git-merge, cg-merge bzr merge hg merge hooky - pøed/po akci (typicky commit) vlastní akce, napø. automatická kompilace distribuované: klonování repozitáøe - vytvoøení lokálního z hlavního svk mirror dargs get git-clone, cg-clone bzr branch hg clone push - zaslání (\natlaèení") zmìn z repozitáøe do repozitáøe svk push file:///repo@revize darcs push url git-push /repo, cg-push bzr push url hg push url Jan Outrata: Version Control Systems (Systémy na správu verzí) 11

pull - stáhnutí zmìn z repozitáøe do repozitáøe, cherrypicking, pø. Linus sí»ovì: svk pull file:///repo@revize darcs pull url git pull /repo, cg-pull bzr pull url hg pull url server s repozitáøem, rùzné metody pøístupu cvs { cvspserver (komunikace: ne¹ifrované heslo) nebo cvsd: -d:pserver:login@server:/repo (nebo $CVSROOT) login { ssh: pserver ext a $CVS RSH=ssh svn { snvserve: svn://server/repo { Apache/WebDAV: http://server/repo { ssh: svn+ssh://login@server/repo ($SVN SSH) darcs Jan Outrata: Version Control Systems (Systémy na správu verzí) 12

{ http://server/repo (pull) { ssh (push) git { rsync://, http://, ssh:// { git-daemon: git:// bzr { http://, (s)ftp:// { smart server (bzr serve): bzr://, bzr+ssh:// hg { http://, ssh:// { HTTP server (hg serve): http:// administrace: u¾ivatelé, práva, hooky, ignorované soubory,... cvs admin snvadmin svk admin editace souboru v _darcs/prefs/ git-repo-config editace souborů v.bazaar/ editace souborů.hgrc,.hgignore Jan Outrata: Version Control Systems (Systémy na správu verzí) 13

nápovìda: cvs -H příkaz snv help příkaz svk help příkaz darcs help příkaz git-help příkaz, cg-help bzr help příkaz hg help příkaz Jan Outrata: Version Control Systems (Systémy na správu verzí) 14

Pøíklady - OSS/FS (a¾ na výjimky) CVS (cvs) v dobì vzniku (1989) inovativní, dnes historické, pou¾ití ze zvyku pøísnì centralizované - distribuovaná varianta DCVS hodnì problémù: neatomické commity (zmìny ve více souborech ka¾dá zvlá¹», jak získat celou zmìnu?, pøeru¹ení nekonzistentní stav), ¹patná podpora vìtvení, minimální podpora pro (opakované) sluèování vìtví (nezachovává se historie obou, jen nová revize v jedné), problém mazání adresáøù, pøejmenování souborù/adresáøù kopie, problém u velkých a binárních souborù (zamykání), neefektivní sí»ová komunikace pou¾ívá napø. GCC (nároèné!) \CVS není odpovìï, CVS je otázka. Ne je odpovìï. Theodore Ts'o" WebCVS, ViewCVS, GUI (gcvs/wincvs/cvsgui, Cervisia) online book, tutoriály http://www.cvshome.org Jan Outrata: Version Control Systems (Systémy na správu verzí) 15

Subversion (svn) reimplementace CVS (\CVS 2.0"), øe¹ení problémù CVS - sluèování vìtví poøád problém (nepamatuje si, které záplaty ji¾ byly aplikovány na dané vìtvi), neefektivní sí»ová komunikace centralizované - distribuovaná varianta SVK nebo skripty SVN:Mirror, svnpush ukládá do DB - existuje i souborový backend fsfs BSD-stará licence (Apache, ne GPL kompat.!) pou¾ívá napø. KDE, GCC uva¾uje WebSVN, ViewSVN, GUI (RapidSVN) online book, tutoriály http://subversion.tigris.org/ GNU Arch (tla) první distribuovaný, mù¾e fungovat i centralizovanì (pøes práva) exibilní a mocný, dobrý v cherrypicking a vìtvení vùbec (\star merge") Jan Outrata: Version Control Systems (Systémy na správu verzí) 16

dnes nespravovaný, komplikované UI (ale þchytré", repozitáø staèí nasdílený adresáø), pomalý nefunguje dobøe na Windows (dlouhá divná jména souborù - +={}, symb. linky, práva, nový øádek) ViewARCH http://gnuarch.org/ SVK (svk) distribuovaná varianta SVN, http://svk.bestpractical.com/ dobré sluèování vìtví a cherrypicking (\star merge" z Archu), rychlé nezralé? (nedodìlaná dokumentace - online book) http://svk.elixus.org/ Bazaar/Bazaar-NG (bzr) distribuovaný, vychází z GNU Archu/Darcsu, jednodu¹¹í UI, portabilní (NG v Pythonu) http://www.bazaar-vcs.org/ Darcs (darcs) distribuovaný, zajímavý (napsaný v Haskellu) Jan Outrata: Version Control Systems (Systémy na správu verzí) 17

dobrý elegantní návrh (\fyzikální", patch algebra podobná kvantové mechanice) ukládá jen zmìny (patche), pracovní adresáø = repozitáø problém u velkých projektù CGI pro webový pøístup online manuál http://darcs.net Monotone (mtn) distribuovaný, prùkopník nového pøístupu (\Monotone design school") objektový model - SHA-1 hashe objektù (soubor, strom, commit) exibilní (skriptování), kryptograe (podepisování commitù, ovìøování pøi operacích) pomalý! ¾ádné web. rozhraní èi GUI http://monotone.ca/ CodeVille (cdv) Jan Outrata: Version Control Systems (Systémy na správu verzí) 18

distribuovaný, objektový model Monotone poøádné sluèování vìtví (Precise CDV Merge) spí¹e výzkumné pou¾ití http://www.codeville.org/ Mercurial (hg) distribuovaný, objektový model Monotone, velmi podobný Gitu rychlý (i na velmi velké projekty) ukládá zmìny jako Darcs http://www.selenic.com/mercurial/ Bitkeeper, BK/Pro (bk) první roz¹íøený distribuovaný atomické commity pomocí changesetù (soubor zmìn jednotlivých suborù) dobrý ve sluèování vìtví (repozitáø pro ka¾dou vìtev, weaves) hodnì pøíkazù ideál?, proprietární! (BitMover, Inc., byla volnì dostupná verze, ale jen pro nedìlající na VCS), døíve pou¾ití na linuxové jádro Jan Outrata: Version Control Systems (Systémy na správu verzí) 19

vlastní web. rozhraní i GUI help na homepage http://www.bitkeeper.com/ GIT/Cogito (git-*, cg-*) distribuovaný, objektový model Monotone, pùvodnì pro linuxové jádro vyvinutý vývojáøi (po zru¹ení volného bk) ukládá celé soubory (komprimované) více specializovaných pøíkazù (UNIX like), git low level nadstavba Cogito (jednodu¹¹í CVS-like UI) rychlý! (cache adresáøù) pùvodnì pro UNIX like systémy GITweb, qgit, gitk Git Howto http://git.or.cz/ dal¹í - Aegis, CVSNT, Vesta (nejen SCM, i þmake"), Superversion,... RSC, SCCS :-) Jan Outrata: Version Control Systems (Systémy na správu verzí) 20

proprietární - Perforce, Rational ClearCase,... srovnání - http://better-scm.berlios.de/ Jan Outrata: Version Control Systems (Systémy na správu verzí) 21

Na èem se dìlá - øe¹ení problémù hodnì nových pøístupù, nových systémù, duplikace práce, ¹tìpení sil snahy o sjednocování, spolupráci, spoleèný výzkum (http://revctrl.org) problém sjednocování (merge) vìtví, v souèasnosti \three-way merge" (báze B - poslední spoleèný pøedek, slouèit A a C = kombinace zmìn B A a B C) - mù¾e být hodnì koniktù nebo naopak ¹patný výsledek bez koniktù (\criss-cross merge") weaves (interleaved delta) - normálnì historie jako zmìny soubor vùèi souboru, weaves má historii jako zmìny na úrovni øádkù (pùvodnì ve starém SCCS - 30 let!, slo¾itìj¹í implementace (s objektovým modelem) Precise CDV Merge cherrypicking - problém u objektového modelu Monotone, weaves dobré homework problem - opravy chyb dostat do pùvodní chybové revize (opravy nedùle¾ité, dùle¾itý výsledek) dnes stabilní a vývojová vìtev UI - slo¾ité pøíkazy GUI Jan Outrata: Version Control Systems (Systémy na správu verzí) 22