Práce se systémem Subversion (SVN)

Podobné dokumenty
Obecné informace o cvičeních

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

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:

Workflow sdíleného projektu ve VisualParadigm

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

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

9. Archivace a verzování svn

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

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

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

Úvod do verzovacích systémů

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

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

Vladimír

4. Nastavení programu

Technologické postupy práce s aktovkou IS MPP

Synchronizace kontaktů z ESO9 do MS Outlook

Specifikace požadavků. POHODA Web Interface. Verze 1.0. Datum: Autor: Ondřej Šrámek

Versiondog Lukáš Rejfek, Pantek (CS) s.r.o. 4/2014

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

SubVersion pro K2 atmitec syst

Aplikace BSMS. Uživatelská příručka - 1 -

Vazba ESO9 na MS Outlook a MS Exchange

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

Versiondog Lukáš Rejfek, Pantek (CS) s.r.o. 7/2014

Vstupní požadavky, doporučení a metodické pokyny

Přenos souborů pomocí AceFTP (pdf verze pro tisk KB)

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

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

O2 Managed Backup & Restore Power

Subversion pro každého

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

NEWSLETTER systému PRACANT verze 4.0

Příručka pro správu systému

Helios RED a Internetový obchod

Internetový obchod ES Pohoda Web Revolution

GeoPlan. Administrátorská příručka. Výstup byl vytvořen s finanční podporou TA ČR v rámci projektu TA Verze 1.0

Manuál pro mobilní aplikaci. Patron-Pro

Modul Účetní centrála Efektivní řešení pro přenos dokladů mezi účetními firmami a jejich klienty

Frilo Control Center správa projektů

Versiondog Co je nového

Připojení přístroje A4101 k aplikaci DDS2000

Po registraci modulu E-SHOPY se v programu DUEL zpřístupní nabídky Seznam e-shopů a Objednávky přijaté - e-shop.

8.2 Používání a tvorba databází

ČÁST 1. Základy 32bitového programování ve Windows

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

Jednoduchý návod k použití programu Vinotéka 2006, v 2.0

Úvod do Linuxu SŠSI Tábor 1

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

ZÁLOHA A OBNOVA ABRA GEN

Zálohování v Linuxu: která možnost je ta správná?

HELIOS - Zálohování BüroKomplet, s.r.o.

Nápověda aplikace Patron-Pro

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze

WinCC. Lokální nebo vzdálená. Internet. Siemens s.r.o. Strana 1 Ing. Ladislav Plachý 2013 SIMATIC IT. Web Client. Web Client DataMonitor Client

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

Obsah. 1 Úvod do Visia Práce se soubory 47. Předmluva 11 Typografická konvence použitá v knize 13

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

VComNet uživatelská příručka. VComNet. Uživatelská příručka Úvod. Vlastnosti aplikace. Blokové schéma. «library» MetelCom LAN

ProjectWise V8 XM Edition

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1.

Evoluce deploye Od FTP po automatický deploy

ADMINISTRACE UNIXU A SÍTÍ - AUS Metodický list č. 1

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

1 Přesun síťového serveru

Univerzální rezervační systém. Uživatelská příručka

Zpravodaj. Uživatelská příručka. Verze

TRANSPORTY výbušnin (TranV)

ZÁLOHA A OBNOVA ABRA GEN

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Administrace služby - GTS Network Storage

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

Demoprojekt Damocles 2404

Nastavení CADprofi pro CAD, aktivace a registrace CADprofi

GDPR A INFORMAČNÍ SYSTÉM. Nadežda Andrejčíková Libor Piškula

plussystem Příručka k instalaci systému

Jednoduchý návod k použití programu Vinotéka 2007, v 2.2.1

Formy komunikace s knihovnami

WEBOVÉ STRÁNKY

Tento dokument je určen oprávněným uživatelům programového vybavení Avensio Software za těchto podmínek:

Monitorování a diagnostika aplikací v produkčním prostředí Michael Juřek

Radim Dolák Gymnázium a Obchodní akademie Orlová

Návod k nastavení účtu v emclient (IceWarp Desktop) pro práci s IceWarp Mail serverem.

Práce s ovými schránkami v síti Selfnet

Zálohování a obnova databáze. Kryštof Měkuta

3. Software Bakaláři Kompletní školení

InvestDokument v.4.02 Build Uživatelská příručka

SUTOL Symposium 2014

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: INFORMAČNÍ TECHNOLOGIE

Nové jazykové brány do Caché. Daniel Kutáč

Artikul system s.r.o. UŽIVATELSKÁ PŘÍRUČKA tel

SOFTWARE 5P. Instalace. SOFTWARE 5P pro advokátní praxi Oldřich Florian

EVIDENCE DOCHÁZKY SE ČTEČKOU INTAGRAL. příručka uživatele

ReDat experience v Release notes

Technologie. Osnovy kurzu: Školení správců systému. 1. den, dopolední blok

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ

Administrační systém ústředen MD-110

Profesionální služby kolem Linuxu

Transkript:

Práce se systémem Subversion (SVN) 2007-2008 Josef Pelikán, CGG MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/svn/ Josef.Pelikan@mff.cuni.cz Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 1 / 40

Obsah VCS systémy obecně Subversion základní koncepce pracovní cyklus, nejčastěji používané příkazy organizace projektu a práce s repository pokročilejší postupy: příkaz copy, tagging, diff branching, merging, backporting klient TortoiseSVN Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 2 / 40

Version Control Systems správa projektů, správa verzí ( verzování ) ukládání historie celého projektu snadné zálohování spolupráce více vývojářů na společné množině souborů správa zveřejněných verzí, podpora zpětné portace chyb různé statistiky pro šéfa projektu, vedení firmy :-) asi nejznámějším systémem je CVS další (i komerční): ClearCase, Visual SourceSafe, GNU Arch, Bazaar, Perforce, BitKeeper, Microsoft Team Foundation, SCCS, RCS Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 3 / 40

Přístupy uložení dat: distribuované vs. centralizované (klient-server) paralelní modifikace: merge vs. lock merge - je dovoleno paralelně editovat stejný soubor, konflikty se řeší až při commitu lock - vývojář soubory před editací zamyká historie: changesets vs. snapshots atomický commit? (konzistence repository) meta-data? verzování adresářů? přejmenování / klonování souborů? mazání? sledování větví / slévání? Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 4 / 40

Subversion (SVN) koncepce I klient-server repository je primárně uložená na serveru globální časová osa atomické commity (konzistence repository) copy modify merge lokální kopie repository (její části): checkout / update modifikace lokální kopie (off-line, udržuje se base ) update + merge: řeší se případně konflikty vzniklé paralelní editací commit: odeslání změn do repository na server Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 5 / 40

Subversion koncepce II lock commit doporučuje se v případě binárních souborů, kde nejde rozumně dělat kontextové slévání ( merge ) meta-data, adresáře jsou verzovány diference se komprimují a posílají oběma směry to se týká i binárních souborů kopie/klony (.. na straně serveru) jsou velmi levné! omezení: mazání souboru + následné použití stejného jména není automaticky udržován pořádek ve větvení a slévání Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 6 / 40

Paralelní práce na projektu Repository Repository Read Read Lukáš Máša Lukáš' Máša' Oba mají totožná data Oba editují svá data Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 7 / 40

Vznik konfliktu Repository' Repository' Write Write Lukáš' Máša' Lukáš' Máša' Lukáš posílá svoje opravy Máša by chtěla poslat opravy konflikt ( out of date ) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 8 / 40

Schéma copy modify - merge Repository' Repository'' Update Write Lukáš' Máša'' Lukáš' Máša'' Máša přijímá Lukášovy opravy (příp. merge ) Máša může poslat své opravy (jsou v souladu s Lukášovými) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 9 / 40

Zamykání (exkluzivní editace) Repository Repository Read Read Lock Lukáš Máša Lukáš Máša Oba mají totožná data Lukáš chce editovat, zamkne si příslušné soubory. Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 10 / 40

Zamykání (exkluzivní editace) Repository Repository' Lock Write Unlock Lukáš' Máša Lukáš' Máša Máša chce také editovat, ale zámek nedostane! Lukáš skončil editaci, uvolňuje zámek. Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 11 / 40

Zamykání (exkluzivní editace) Repository' Repository'' Lock Update Write Unlock Lukáš' Máša' Lukáš' Máša'' Máša už teď zámek dostane. Po editaci a odeslání změn i Máša uvolňuje zámek. Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 12 / 40

Pracovní kopie ( working copy ) kopie repository nebo její části na pracovní stanici každý vývojář má vlastní pracovní kopii (např. na lokálním disku) počáteční download checkout aktualizace pracovní kopie z repository update umí zachovat lokální úpravy, pokud nejsou ve velkém rozporu se změnami z repository (tj. udělá jakési slévání změn) pokud jsou lokální a veřejné změny v konfliktu, je lokální vývojář požádán o jejich vyřešení ( resolving ), to se musí dělat ručně Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 13 / 40

Běžný pracovní cyklus aktualizace pracovní kopie: checkout nebo update editace pracovní kopie neměla by trvat příliš dlouho, pokud pracuji v živém týmu aplikace změn z repository: update jde hlavně o změny, které mezitím udělali vývojáři na stejných souborech ale i jiné úpravy mohou např. pokazit kompilaci, apod. případné ruční rešení konfliktů, nakonec: resolved odeslání lokálních změn do repository: commit Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 14 / 40

Editace pracovní kopie Běžná editace již existujících souborů vývojovými nástroji a navíc: přidání nového souboru/adresáře: add odstranění z repository: delete kopie souboru/adresáře (klon, zachová se historie): copy přejmenování/přesun do jiného adresáře: move vrácení lokálně provedených změn: revert změny od posledního příkazu commit / update se zruší Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 15 / 40

Změny v pracovní kopii systém SVN si u celé vaší kopie pamatuje, z jakého stavu jste při editaci vycházeli (umí pracovat off-line!) je možné se vrátit k původnímu stavu ( pristine copy ) příkazem: revert potenciálně nebezpečné, můžete přijít o svou práci! k prohlížení změn slouží příkaz: status rozdíly konkrétního souboru: diff má i obecnější použití (změny mezi různými verzemi/revizemi libovolných souborů) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 16 / 40

Model historie v SVN koncepce snapshots : z hlediska serveru jsou jedinými okamžiky, kdy se repository mění, úspěšně dokončené operace commit (viz atomický commit ) jednotlivé commity jsou na časové ose uspořádané očíslovaným stavům repository se říká revize čísla revizí jsou společná pro celou repository snadno se vrátím v čase přesně do daného okamžiku a to jak pro konkrétní soubor, tak i pro množinu souborů nebo adresářů stav pracovní kopie však může být složitější (mix revizí) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 17 / 40

Příklad vývoje repository Lukáš ch: todo.txt add: lunit.h add: lunit.cpp add: support.h čas (rev#) add: llog.txt (copy from todo.txt) ch: todo.txt ch: lunit.h ch: munit.cpp rev10 rev11 rev12 ch: llog.txt ch: todo.txt ch: support.h ch: munit.h rev13 rev14 ch: llog.txt ch: todo.txt add: test.cpp ch: lunit.cpp rev15 rev16 Máša ch: todo.txt add: munit.h add: munit.cpp ch: todo.txt ch: munit.h ch: munit.cpp ch: support.h ch: todo.txt ch: test.cpp ch: munit.h ch: munit.cpp Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 18 / 40

Příklad: verze jednotlivých souborů rev 9 rev 10 rev 11 rev 12 rev 13 rev 14 rev 15 rev 16 todo.txt? 10 11 12 13 14 15 16 support.h 10 10 10 13 14 14 14 lunit.h 10 10 12 12 12 12 12 lunit.cpp 10 10 10 10 10 15 15 munit.h 11 11 13 14 14 16 munit.cpp 11 12 12 14 14 16 llog.txt 12 13 13 15 15 test.cpp 15 16 červená modrá změna souboru v dané revizi klon existujícího souboru ( svn copy ) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 19 / 40

Zkoumání historie je třeba pracovat on-line, pracovní kopie historii neobsahuje výpis seznamu změn ( commitů ) konkrétního souboru nebo adresáře: log jednotlivé položky obsahují: číslo revize, datum a čas, autor, poznámka ke commitu pište smysluplné poznámky ke commitům SVN nedovolí poznámku úplně vynechat (ale...) přehled posledních změn textového souboru po jednotlivých řádcích: blame Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 20 / 40

Zkoumání historie: diference výpis nebo zobrazení rozdílů mezi verzemi jednotlivých souborů/adresářů: diff nejjednodušší verze příkazu ukáže změny od updatované verze ( pristine copy ) lze generovat změny mezi libovolnými verzemi a/nebo na několika souborech najednou lze generovat změny ve formátu patch efektivní pro textové soubory s rozumně krátkými řádky pohled dovnitř SVN: interně se diference počítají i u binárních souborů a do databáze repository se ukládají právě jen tyto diference Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 21 / 40

Subversion server SVN repository může být přístupná pomocí různých protokolů file:/// data jsou přímo uložna ve FS klientského počítače (problémy s paralelním přístupem, bezpečnost) http:// WebDAV přístup přes server Apache https:// jako http, navíc šifrování pomocí SSL svn:// speciální protokol (port 3690), uživatelské účty, authentication realms svn+ssh:// jako svn, ale skrz SSH tunel Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 22 / 40

Meta-data, atributy soubory/adresáře pod kontrolou SVN mohou být opatřeny různými atributy content-type souboru, ošetření konců řádků, ignorování souborů v adresářích, + vlastní uživatelské atributy atributy se verzují jako všechna ostatní data je možné nakonfigurovat automatické nastavování atributů např. každý soubor *.txt je označen jako textový s nativními konci řádků nebo každý soubor *.sh je označen jako textový a navíc má atribut executable,.. Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 23 / 40

Populární vestavěné atributy svn:eol-style native, CRLF, CR, LF ošetření konců řádků (přenos mezi klientem a serverem) svn:mime-type klasický MIME-type svn:executable pro checkout do UNIXu svn:ignored seznam položek, které se ignorují svn:keywords substituce v textových souborech Date zapíná substituci $Date: $ (datum commitu) Rev zapíná substituci $Rev: $ (číslo revize) Author substituce $Author: $ (kdo commitoval) Id $Id: $ se nahradí zkratkou předchozích info. Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 24 / 40

Větvení, slévání,.. ( branching ) udržování několika málo se lišících verzí projektu s možností snedného přenášení oprav z jedné větve do druhé (něco jako backporting.. crossporting ) refaktorizace, přestavba v nezávislé větvi práce bude trvat delší dobu nechceme, aby se porušila kompilovatelnost/funkčnost hlavní větve podobné techniky se používají i k vytváření snapshots nebo tags ale nepředpokládá se, že se tag bude někdy měnit Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 25 / 40

Příklad rozvětvení (kvůli refaktorizaci) copy: main.cpp (from trunk) ch: main.cpp ch: main.cpp add: main.cpp rev18 rev19 rev32 my_branch čas (rev#) rev12 rev16 rev22 rev29 trunk ch: main.cpp ch: main.cpp ch: main.cpp Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 26 / 40

Operace copy základem pro vytváření větví, tags, apod. interně se implementuje jen pomocí odkazů je velice levná! ( copy-on-change ) představa: v jistém okamžiku se objekty (soubory, adresáře) naklonují převezmou kompletní historii od svých vzorů přebírají se samozřejmě i atributy (a jejich historie..) cílové umístění kopie (klonu) je libovolné musí být ve stejné repository konvence: adresáře branches, tags, trunk Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 27 / 40

Branch a pracovní kopie po commitování operace copy se ve file-systému SVN repository vytvoří klon daného adresáře vývojář může udělat checkout nebo update a začít pracovat v tomto novém adresáři nebo je možné v pracovní kopii nastavit, že má být dosavadní adresář přepnut do nové větve: příkaz switch korektní postup, jak v pracovní kopii přepsat objekt (adresář/soubor) objektem z jiné větve je podobný příkazu update s odlišným URL přehnané používání příkazu switch zmatek! Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 28 / 40

Přenášení úprav mezi větvemi příkaz merge : přenese specifikované změny (úpravy, posloupnosti úprav) z jedné větve do druhé korektně ošetřuje všechny editační operace včetně změn atributů historie přenášení (které změny byly již přenesesny a které ne) se zatím v SVN musí dělat ručně pozor, aby nebyla některá změna přenesena vícekrát! svn merge dry-run.. provede operaci nanečisto aspoň tak se dá konfliktům zabránit Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 29 / 40

Příklad slévání větví copy: main.cpp ch: main.cpp ch: main.cpp merge -r18:34 my_branch my_branch delete my_branch rev18 rev19 rev32 rev36 trunk rev22 rev29 rev35 ch: main.cpp ch: main.cpp Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 30 / 40

Přenášení úprav mezi větvemi merge z trunku do vedlejší větve (synchronizace) měl by se provádět dost často, jinak je potom přenos zatížen mnoha konflikty merge z vedlejší větve do trunku pokaždé, když potřebujeme odrazit [mezi-]výsledek v hlavní větvi testeři mohou naše opravy začít testovat finální přenesení změn a zánik vedlejší větve smazání již nepotřebné větve příkaz delete Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 31 / 40

Další použití copy a merge copy slouží i k vytváření zálohy ( snapshot, tag ) aktuálního stavu hlavní větve organizační konvence v takové záloze se již nesmí dělat úpravy! příklad: adresář tags sbírka všech public releases selektivní merge (z trunku) do některé zálohy záloha by měla být naklonovaná viz výše backporting oprav chyb do starších verzí musí se dát pozor na aplikovatelnost změn případné nesrovnalosti se musí řešit ručně Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 32 / 40

Co se nevešlo.. export : export stromu z repository na disk neobsahuje řídící adresáře, nevznikne pracovní kopie import : import dat do repos. a okamžitý commit cleanup : regenerace řídících adresářů lock a unlock : zamykání (exkluzivní editace) svnadmin create : na serveru vytvoří novou repo. svnadmin dump resp. svnadmin load zálohování do textového souboru resp. obnova repository ze zálohy Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 33 / 40

Organizace repository adresář trunk : poslední funkční verze, veřejně přístupná? měla by jít přeložit a fungovat (? výjimky?) adresář branches : když se nějaký vývojář chce déle vrtat v kódu často synchronizaovat s trunkem! adresář tags : seznam release verzí, milestones nesmí se editovat! (technicky lze zajistit pomocí hook ) zvláštní případy: větve pro různé zákazníky, HW,... Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 34 / 40

Co do repository patří co je předmětem vývoje, co se (nejčastěji ručně) edituje, co chceme verzovat zdrojáky projektové soubory, Makefiles Microsoft Visual Studio: *.dsw, *.dsp, *.sln, *.vcproj dokumentace, texty, návody (prefer. ve zdrojáku) log-files, todo-files nejnutnější data patřící k projektu (ikony, konfigurační soubory) soubory, které nejsou moc dlouhé a je obtížné je stáhnout jinde.. Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 35 / 40

Co do repository nepatří! obecně: co lze zkompilovat, transformovat ze souborů z repository, co se u každého vývojáře liší.. výsledky překladu (*.exe, *.class, *.jar, *.so, apod.) pracovní a dočasné soubory (*.obj, *.o, *~, *.bak, apod.) Microsoft Visual Studio: *.ncb, *.opt, *.plg, *.suo, *.user komponenty (knihovny) třetích stran, které jsou snadno dostupné jinde (? výjimky?) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 36 / 40

Organizace práce I commitovat co nejčastěji minimálně jednou denně vždy po uzavření logického celku (oprava jedné chyby..) psát poznámky ke commitům stručné a informativní nepsat, co se změnilo (to každý vidí), ale jak a proč! oprava chyby ( kartička ) číslo případu vedlejší větve ( branches ) potřeba dlouho pracovat a nerozbít projekt ostatním nenechat větev příliš zastarat (synchroniz. oběma směry) Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 37 / 40

Organizace práce II vlastnictví kódu vs. bazar každý programátor zodpovídá za jisté moduly dovolím opravovat cokoli komukoli, ale vlastník to nakonec zkontroluje (automatické hlášení přes hooks ) trunk se udržuje funkční (minimálně přeložitelný!) polední kompletní build (viz Spolsky) hříšník builduje příště.. využívat SVN-atributy svn:ignored, svn:eol-style, svn:keywords Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 38 / 40

TortoiseSVN grafický SVN klient integrovaný do Windows shell extension lokální menu v každém file-exploreru repository browser (registrace URI protokolů svn://..) některé příkazy na pravé tlačítko myši! ( copy, move ) velmi pohodlné GUI verze příkazů: diff, merge log, blame, revision graph Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 39 / 40

Literatura, on-line zdroje SVN home-page: http://subversion.tigris.org/ Subversion-book: http://svnbook.red-bean.com/ klient TortoiseSVN pro Windows: http://tortoisesvn.tigris.org/ multi-platformní klient RapidSVN: http://rapidsvn.tigris.org/ Joel on Software: http://joelonsoftware.com/ Práce se systémem SVN 2008 Josef Pelikán, http://cgg.ms.mff.cuni.cz/~pepca 40 / 40