Vladimír

Podobné dokumenty
Subversion. Jakub Vlček

9. Archivace a verzování svn

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

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

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

Použití Subversion pro verzování TEXových dokumentů

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

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

Úvod do verzovacích systémů

Obecné informace o cvičeních

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

Knot DNS workshop. CZ.NIC Labs Daniel Salzman / daniel.salzman@nic.cz Jan Kadlec / jan.kadlec@nic.cz

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:

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

Coordinate System Editor Software

Vytvoření pokročilé Fotogalerie v Drupalu - Views

Evoluce deploye Od FTP po automatický deploy

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

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

Instalace. Samotný firewall již je s největší pravděpodobností nainstalovaný Zjistíme dle parametru při použití. aptitude search iptables

Workflow sdíleného projektu ve VisualParadigm

Nastavení CADprofi pro CAD, aktivace a registrace CADprofi

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese

Systém nabídky 4 RANDOM ON/OFF 5 REPEAT ON/OFF 6 EDIT CD ON/OFF 7 TIMER ON/OFF 8 EDIT A.MEM ARRANGE CONTENT RENAME FOLDER

RPM,YUM - bleskove zaklady Jiri Kubina Ver. 1.0 unor 2006

Automatické testování softwaru. Testujte svůj kód! Předpoklady: Příklad: sum_digits() Možnost 1: Zkusíme funkci použít v konzoli Pythonu.

B. TVORBA DOKUMENTACE NA PC- EAGLE

Příloha 6. Palety nástrojů

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

PSP Validator Documentation

Správa a provoz serveru Knot DNS

CAD library. Spuštění aplikace. Práce s aplikací. Popis okna

Maturitní téma: Operační MS-DOS

Úvod do Operačních Systémů

O2 Managed Backup & Restore Power

Jak začít s osobním zvukovým systémem PSS

PG 9.5 novinky ve vývoji aplikací

Boříme zdi klienta Lotus Notes 8. Jan Krejcárek DIGI TRADE

Vyšetřování průběhu funkce pomocí programu MatLab. 1. Co budeme potřebovat?

ZÁLOHA A OBNOVA ABRA GEN

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

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

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

1. Instalace a aktualizace Falcon BMS 4.32

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI]

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

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

Uživatelské příkazy: false - dialog ukončen IDCANCEL. Vytvoří nové okno. title - titulek okna

Jak importovat profily do Cura (Windows a

Instalace produktu Ontopia. ver (open-source verze)

Neřízené usměrňovače reálné vlastnosti

1. Základní pojmy, používané v tomto manuálu. 2. Stránky

Zvýšení zabezpečení počítače

Počítačové sítě Systém pro přenos souborů protokol FTP

Stahování ebooks v rozhraní EBSCOhost

LINUX SOUBORY. Zadejme příkaz ls l! V této lekci se odrazíme od dlouhého výpisu příkazu ls a uvidíme, kam nás to zanese. SPŠ Teplice - 3.

Metodický postup vyhodnocení obsahůaminokyselin ve standardech a vzorcích programem CHROMuLAN v 0.56 a vý še. S. Kráč mar, P. Píš a, P.

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

PHP a Large Objecty v PostgreSQL

Ladění ovladačů pomocí virtuálního stroje...2 Úvod...2 Ladění ovladačů pomocí dvou fyzických počítačů...2 Ladění ovladačů pomocí jednoho fyzického

Jak stahovat ebooks. 1. Stažení ebook:

Úvod do Operačních Systémů

SubVersion pro K2 atmitec syst

Tipy a triky nejenom v shellu nejenom pro programátory

ZÁLOHA A OBNOVA ABRA GEN

Základní příkazy UNIXu (Linuxu)

ZÁLOHA A OBNOVA ABRA GEN

H.P.L. Systems s.r.o. Jičínská PRAHA 3, CZ Obsah

1. Paleta History (Historie)

Školní události. v Pozn.: Níže popsaný návod je určen pro uživatele s rolí Administrátor, není-li uvedeno jinak.

Filr 2.0 Uživatelská příručka k aplikaci Filr Web. Únor 2016

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Aplikace SEMS Portal V1.0

c h r á n í m e d i g i t á l n í s v ě t y NOD32 Server Edition pro Lotus Domino Instalace

Zálohování ů pomocí klienta Mozilla Thunderbird

Group policy. Jan Žák

K podepisování a správné funkčnosti Versa doporučujeme používat prohlížeče Internet Explorer aktuální verze

MANUÁL K OBSLUZE REDAKČNÍHO SYSTÉMU / wordpress

Git. Milan Rybář

Microsoft Sync Framework. Jiří Činčura blog.cincura.net

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

NAS 323 NAS jako VPN Server

CODE BOOK NEISS 8. A code book is an identification tool that allows the customer to perform a test result evaluation using a numeric code.

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

Seznam změn v manuálu

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

Digitální kartografie 4

Projekt Obrázek strana 135

Použité verze software: Autodesk Revit 2015 a vyšší + Autodesk Navisworks 2015 a vyšší. Potřebný čas studia: minut

Nastavení Java pro aplikaci G-Client Str. 1/8

Nastavení komunikace mezi KEO-X a KEO-W verze 5 ( )

Uživatelský manuál. Format Convert V3.1

Programování v Pythonu

Profesionální služby kolem Linuxu

UPGRADE/ZMĚNA FIRMWARE ÚSTŘEDEN ESIM264/364

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Stručný úvod pro programátory. Michal Kuchta

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ

Transkript:

Vladimír Mach @vladimirmach 29.1 0. 2012

Agenda Konflikty v rámci jednoho souboru Konflikty v rámci struktury adresáře (tree conflicts) Shallow checkout

Flag Význam U Updated Soubor byl aktualizován o změny ze serveru G Merged Lokální a vzdálené změny byly sloučeny automaticky C Conflict Konflikt v souboru, který je nutno vyřešit D Deleted Soubor byl v repozitáři odstraněn A Added Soubor byl nově v repozitáři vytvořen

konfliktu Možnost Slovo Význam e Edit show all changes made to merged file df Diff-full show all changes made to merged file r Resolved accept merged version of file dc Display-conflict show all conflicts (ignoring merged version) mc Mine-conflict accept my version for all conflicts (same) tc Theirs-conflict accept their version for all conflicts (same) mf Mine-full accept my version of entire file (even non-conflicts) tf Theirs-full accept their version of entire file (same) p Postpone mark the conflict to be resolved later l Launch launch external tool to resolve conflict Pokud rovnou víme, že konflikt nechceme řešit hned: svn update --non-interactive

Zobrazení konfliktů (df) display-full Vypíše seznam všech rozdílů mezi lokální a vzdálenou verzí (dc) display-conflict Vypíše jen ty konflikty, které se nepodařilo vyřešit automaticky

Možnosti řešení (e) edit Otevření editoru podle proměnné EDITOR (r) resolved Po provedení změn potvrdí aktuální verzi a označí konflikt jako vyřešený (mc) mine-conflict Odmítnutí všech konfliktních změn ze serveru, ale nekonfliktní pasáže ze serveru akceptuje (tc) their-conflict Zahození lokálních konfliktních změn, ale zachová všechny lokální nekonfliktní pasáže

Možnosti řešení (2) (mf) mine full Zahodí všechny změny ze serveru a zachová lokální verzi (tf) theirs full Zahodí všechny lokální změny a přepíše je změnami ze serveru

Připomenutí: označení revizí HEAD Nejaktuálnější verze repozitáře BASE Číslo revize v naší working copy, pokud soubor byl upraven, tak k souboru před úpravami COMMITTED Nejaktuálnější revize předcházející nebo rovna BASE, ve které byl soubor změněn PREV Předcházející revize revizi kdy byl soubor změněn. Odpovídá to COMMITTED-1 Příklad: svn diff -r PREV:COMMITTED foo.c ukáže poslední commitované změny souboru foo.c

Odložené řešení (p) postpone Nechá soubor v konfliktním stavu k pozdějšímu vyřešení Soubor zůstane označen flagem C Na disku se vytvoří 3 dočasné neverzované soubory file.mime File.rOLD File.rNEW Námi upravený soubor před aktualizace repozitáře Původní neupravovaná verze souboru před aktualizací repozitáře (BASE) Nová verze souboru přijatá po aktualizaci repozitáře (HEAD) Subversion může do souborů umístit tzv. conflict markers Viditelné oddělení konfliktních oblastí Určuje se podle MIME typu souboru Dokud tyto soubory nebudou odstraněny, (přes svn resolve) nebude možné provést commit # svn commit svn: Commit failed (details follow): svn: Aborting commit: 'file' remains in conflict

Odložené řešení (2) Conflict markers <<<<<<< filename naše změny ======= kód z repozitáře >>>>>>> revision Po provedení změn označíme konfliktní soubor jako uzavřený Pomocí svn resolve

Odložené řešení svn resolve Pro vyřešení použijeme parametr --accept hodnota base mine-full theirs-full working Význam Výběr verze, kterou jsme naposledy checkoutovali před provedenými změnami Výběr verze, která obsahuje pouze naše změny Výběr verze, která obsahuje pouze změny ze serveru a tedy zahození všech našich změn Výběr verze, kterou jsme ručně upravili (projitím a úpravou conflict markers v souboru) # svn resolve --accept working SOUBOR Resolved conflicted state of 'SOUBOR'

Tree conflicts

Tree conflicts Konflikty, které nastávají při přejmenování nebo odstranění souborů Například při refaktorování kódu může jeden vývojář rozdělit soubor na více souborů, ale my provedli změny na původním velkém Před verzí 1.6 se toto chování nijak neřešilo mohly se nějaké lokální upravy ztratit. Pokud situace nastala, tak: Se zkontroloval soubor jestli nebyl modifikován, Smazal se na původním umístění a pokud byl modifikován, tak se zachoval, ale už jako neverzovaný, Přidal se soubor, tak jak je ve vzdáleném repozitáři na nové umístění. Od verze 1.6 se toto už označí jako konflikt, který musí být vyřešen

Řešení Připomenutí: SVN přesun souboru chápe jako zkopírování + odstranění Přejmenování souboru jiným přispěvovatelem během našich úprav Commit selže (svn status nám oznámí flagem C konflikt) Z commit logu zjistíme, že soubor byl přejmenován SVN automaticky označí tento smazaný soubor zpět k přidání Už nám ale neřekne, jestli soubor byl opravdu smazán, nebo přejmenován -> odhadnout ze zprávy v commit logu S přejmenováním souhlasíme, takže náš soubor smažeme, ale předtím musíme ručně změny přenést do nově přijatého z repozitáře Buď opravdu ručně, nebo pomocí patch souborů

Demo Dvě working copy 2 vývojářů Přejmenování souboru s třídou, aby odpovídalo jménu třídy v souboru # svn cp Rights.php Acl.php # svn rm Rights.php # svn commit -m "Renamed file to same name as class inside." 1 2 Přidání nových oprávnění do původního souboru # svn commit -m "Add new role with corresponding rights." Sending models/rights.php svn: Commit failed (details follow): svn: File 'Rights.php' is out of date svn: File not found: transaction '3-3', path '/trunk/app/models/rights.php'

Demo Aktualizujeme si tedy repozitář a podíváme se co se změnilo # svn update C Acl.php A Rights.php Updated to revision 3. Summary of conflicts: Tree conflicts: 1 Pomocí svn status se podíváme detailněji na podrobnosti # svn status A + C Acl.php > local edit, incoming delete upon update M Rights.php Podíváme se tedy do logu co se v repozitáři změnilo # svn log --verbose -r3 ------------------------------------------------------------------------ r3 vlada 2012-10-28 05:57:07 +0100 (Sun, 28 Oct 2012) 1 line Changed paths: D /trunk/app/models/rights.php A /trunk/app/models/acl.php (from /trunk/app/models/rights.php:2) 2 Renamed file to set filename same as class name.

Demo Pomocí svn info se podíváme detailněji na konflikt # svn info Acl.php tail -n 4 Tree conflict: local edit, incoming delete upon update Source left: (file) http://server/svn/nette/trunk/app/models/acl.php@2 Source right: (none) http://server/svn/nette/trunk/app/models/acl.php@3 2 Left URL říká lokální zdroj konfliktu, right URL říká zdroj příchozího konfliktu, podle těchto cest víme kde hledat problém Když znovu zkusíme commit # svn commit -m "Add new role with corresponding rights." svn: Commit failed (details follow): svn: Aborting commit: '/tmp/mff/demo2/app/models/acl.php' remains in conflict 2 Provedené změny tedy musíme přenést do nového souboru

Demo Vytvoříme si patch soubor se změnami # svn diff Rights.php > PATCH Upravíme výskyty Rights.php za Acl.php # svn patch PATCH U Acl.php 2 Nyní už jen vyřešíme konflikt # svn delete --force Rights.php D Rights.php # svn resolve --accept=working Rights.php Resolved conflicted state of 'Rights.php Nyní už můžeme provést commit # svn commit -m "Add new role with corresponding rights." Sending models/acl.php Transmitting file data. Committed revision 4.

Shallow checkouts

Nerekurzivní/s omezenou hloubkou checkout z repozitáře Výhodné pokud máme jeden společný repozitář s několika projekty, ale chceme lokálně načíst jen nějakou podmnožinu projektů # svn checkout --depth empty http://svnserver/solution/ solution # svn update --set-depth infinity project1/trunk # svn update --set-depth infinity project2/trunk

http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html#svn.tour.cycle.resolve http://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html http://svnbook.red-bean.com/en/1.7/svn.tour.treeconflicts.html http://www.tomred.net/svn-shallow-checkouts.html