%deffont "bf" tfont "Verdana_Bold.ttf" %deffont "rm" tfont "Verdana.ttf" %deffont "tt" tfont "Courier_New.ttf" %deffont "btt" tfont "Courier_New_Bold.ttf" %% %default 1 bgrad 30 30 128 80 1 "black" "black" "darkblue" "black" "black" "black" "black" "black" "#005000" "black", size 3, charset "iso8859-2", font "bf" %default 2 size 8, fore "yellow", vgap 80, prefix " ", font "bf" %default 3 size 2, bar "gray70", vgap 10, font "bf" %default 4 size 6, fore "white", vgap 40, prefix " ", font "bf" %% %tab 1 size 6, vgap 40, prefix " ", font "bf" %tab 2 size 6, vgap 40, prefix " ", icon box "green" 50, font "rm" %tab 3 size 5, vgap 40, prefix " ", icon arc "yellow" 50, font "rm" %tab 4 size 4, vgap 40, prefix " ", icon delta3 "white" 40, font "rm" %% %page %nodefault %bgrad 30 30 128 80 1 "black" "black" "darkblue" "black" "black" "black" "black" "black" "#005000" "black" %charset "iso8859-2" %vgap 20 %center, fore "yellow", font "bf", size 9, vgap 60 Systémy pro údržbu zdrojových textů %size 7 %bar "red" 10 10 80 %fore "white" %font "rm" Jan "Yenya" Kasprzak Fakulta informatiky MU %font "btt" http://www.fi.muni.cz/~kas/ %font "bf" %leftfill %page Obsah přednášky K čemu SCM/VCS? Základní pojmy Systém Subversion Verze souborů Lineární vývoj Větvený vývoj Další vlastnosti Jiné SCM systémy %page K čemu SCM/VCS Repository (úložiště) centrální úložiště zdrojových textů/dat pro jeden soubor/pro celý projekt Zpětný pohled na data Rozdíly mezi verzemi Komentáře k úpravám/změnám Spolupráce více vývojářů možnost přiřadit změny k autorovi Údržba více větví vývoje stabilní/vývojová větev %page Způsoby práce se SCM Lock-Modify-Unlock Nelze editovat soubor na více místech Problém "uživatel na dovolené" Extrémní programování? Stejný problém u závislosti mezi soubory Copy-Modify-Merge Paralelní vývoj odstranění chyby vs. další změny Upozornění na konflikty %page Systém Subversion Odkazy %cont, font "btt" http://www.tigris.org/ %font "rm" %cont, font "btt" http://svnbook.red-bean.com/ Požadavky na instalaci BerkeleyDB Python (pro cvs2svn) swig Apache (pro mod_dav_svn) libapr, libneon, libxml OpenSSL %page Základy práce se Subversion %cont, font "btt" svnadmin %font "rm" řídící operace nad repository %cont, font "btt" svn %font "rm" práce s repository a s projektem Vytvoření repository %cont, font "btt" svnadmin create /cesta/k/repository %font "rm" Import projektu %cont, font "btt" svn import [] %font "rm" Export projektu (checkout) %cont, font "btt" svn co %font "rm" Služební adresář .svn %page Editace, ukládání změn Testování změněných souborů %cont, font "btt" svn status %font "rm" Co se změnilo? %cont, font "btt" svn diff %font "rm" Návrat změn do původní podoby %cont, font "btt" svn revert %font "rm" Uložení změn %cont, font "btt" svn commit %font "rm" %page Pojmenování verzí Číslo verze v subversion globální pro repository Datum: %cont, font "btt" {yesterday}, {2003-05-12}, ... %font "rm" HEAD poslední verze repository BASE verze ze které byl checkout COMMITTED verze, ve které se soubor naposled měnil PREV (= COMMITTED - 1) %page Paralelní vývoj Nelze commit vzhledem ke starší verzi Lineární číslování verzí Integrování cizích změn %cont, font "btt" svn update %font "rm" Informace o změnách %cont, font "btt" svn log %font "rm" Získání starší verze %cont, font "btt" svn cat %font "rm" Vyřešení konfliktu %cont, font "btt" svn resolve %font "rm" %page Adresářová struktura Verzování adresářové struktury Velmi levná operace kopírování %cont, font "btt" svn copy %font "rm" %cont, font "btt" svn add %font "rm" %cont, font "btt" svn delete %font "rm" %cont, font "btt" svn move (= copy + delete) %font "rm" Výpis adresáře v určité verzi %cont, font "btt" svn list [/] %font "rm" %page Větve, značky, spojování Vývoj rozdílným směrem stabilní a vývojová verze implementace složitějších úprav Větev kopie v určitém okamžiku, nadále samostatná Značka symbolické jméno určité verze/větve %cont, font "btt" "release_1_0" %font "rm" Spojování (merge) integrace změn z jedné větve do druhé %page Větve a značky v Subversion Jednoduchá implementace vše je kopie podstromu jinam Typické rozložení repository %cont, font "btt" /trunk %cont, font "rm" - hlavní větev %cont, font "btt" /branches %cont, font "rm" - větve %cont, font "btt" /tags %cont, font "rm" - symbolická označení Vše pomocí %cont, font "btt" svn copy %font "rm" %page Spojování větví Aplikování cizích změn %cont, font "btt" svn merge %font "rm" Proč ne %cont, font "btt" svn diff | patch ? %font "rm" patch nedělá adresářové operace Zrušení předchozí změny %cont, font "btt" svn merge -r nová:stará %font "rm" Zrušení větve/tagu %cont, font "btt" svn delete %font "rm" Změna větve %cont, font "btt" svn switch %font "rm" %page Další vlastnosti Vlastnosti souborů MIME typ, UNIXová práva, uživatelské Práce s binárními soubory Expanze klíčových slov %cont, font "btt" $Id$, $Version$, ... %font "rm" Síťové repository %cont, font "btt" mod_dav_svn %font "rm" %cont, font "btt" svnserve %font "rm" %cont, font "btt" svn export %font "rm" Vendor branch implementuje se pomocí podadresáře %page Co v Subversion chybí Grafický nástroj pro merge Podpora decentralizovaného vývoje Permanentní zrušení změn %page Další SCM systémy SCCS nejstarší; nad samostatnými soubory free implementace CSSC; %cont, font "btt" @(#) %font "rm" RCS z BSD; nad jednotlivými soubory podporuje i lock-modify-unlock CVS původně nad RCS; správa více souborů neumí adresářové operace neumí rozumně smazané a obnovené soubory %page Ještě další SCM systémy BitKeeper distribuovaný vývoj bez centrální repository sady změn (changesets) není lineární vývoj není Open Source Open Logging licence Arch distribuovaný vývoj zatím v začátcích A další: PRCS, Aegis, ... %page %nodefault %bgrad 30 30 128 80 1 "black" "black" "darkblue" "black" "black" "black" "black" "black" "#005000" "black" %vgap 150 %center, fore "yellow", font "bf", size 10, vgap 60 Děkuji za pozornost %bar "red" 10 10 80 %fore "white", size 8 %font "rm" http://www.fi.muni.cz/~kas/