4. Rychlá cesta pro netrpělivé

Jak už bylo řečeno, TortoiseHg je sada grafických aplikací, které spolu s Průzkumníkem Windows slouží jako uživatelsky přívětivé rozhranní pro DVCS Mercurialu (distributed version control system - necentralizovaný systém správy verzí).

Všechny nástroje TortoiseHg jsou přístupné ze třech míst:

  1. Z aplikace Verpánek

    Verpánek (Workbench) spustíme z menu Start nebo z kontextového menu aktivovaného poklepem pravé klávesy myši s kurzorem kdekoli v ploše monitoru.

    Desktop Context Menu

    Spuštění Verpánku z plochy monitoru

  2. Z kontextového menu Explorer

    Na vybrané složce či souboru v Průzkumníku provedeme pravý poklep a vybereme položku z kontextového menu.

  3. Příkazem thg z příkazového řádku

    V konzoli cmd.exe či v jiném terminálu zadáme příkaz thg <command> [opce].

Příkazy Mercurialu jsou dostupné také z příkazového řádku příkazem hg <command>.

Poznámka

Při zadávání příkazu z příkazového řádku se předpokládá, že repozitórium je aktuálním adresářem příkazové konzoly.

4.1. Nastavení programu

Nejprve se musíme do programu TortoiseHg řádně zapsat. Uděláme to tak, že otevřeme dialog pro globální nastavení.

Verpánek: :menuselection: File > Settings

Průzkumník: :menuselection: TortoiseHg > Globální nastavení

Příkazem: thg userconfig

Tím si otevřeme dialogové okno Nastavení TortoiseHg pro úpravu globální konfigurace platné pro všechny repozitáře.

Settings Dialog

Okno TortoiseHg Settings

Nejprve vybereme kartu Commit a zadáme jméno v poli Jméno uživatele.

Poznámka

Pokud nezadáme uživatelské jméno nyní, budeme na něj tázáni později, až poprvé použijeme příkaz commit.

Poznámka

Pro formátování uživatelského jména není pevné pravidlo ale obvykle se používá následující forma:

Celé Jméno <email>

například

Donald Duck <donaldduck@example.net>

Emailová adresa je při prohlížení změn odtržena a vestavěný webový server emailovou adresu zakryje v rámci prevence proti spamu.

Dále vybereme katru TortoiseHg a v ní Nástroj pro sloučení. V rozvinovacím seznamu nalezneme všechny slučovací nástroje nalezené v programovém vybavení počítače (kdiff3 je poskytnut instalátorem pro Windows) a řadu interních způsobů sloučení. Vybereme si oblíbený nástroj pro slučování.

Pokud chceme, aby TortoiseHg používal námi vybraný slučovací nástroj také pro zobrazení diffů, necháme položku Nástroj pro sloučení neurčenu. Jinak si v rozvinovacím seznamu vybereme z nabízených nástrojů.

Pokud nám v uvedených položkách není nabídnuta žádná volba, musíme instalovat nástroj, který je podporován v mergetools.rc nebo si nakonfigurovat nástroj vlastní.

Poznámka

Při instalaci TortoiseHg ze zdroje, je nutné nějakým způsobem přidat soubor contrib/mergetools.ini do cesty HGRC. Možný způsob je připojit jej ze souboru ~/.hgrc.

Neostýchejte se konfigurovat i další položky globálního nastavení. Budeme je moci později přepsat v lokální konfiguraci repozitáře.

Nastavené změny potvrdíme a okno zavřeme tlačítkem OK.

Poznámka

Většina změn nastavení TortoiseHg se projeví okamžitě ale povolení nebo zakázání extenzí obvykle vyžadují restart.

4.2. Status souboru

Soubory, obsluhované Mercurialem, mají různý vztah k zapisované historii. Tento vztah je vyjádřen jako status souboru příslušným označením:

  • A (added) přidaný do komitu - příkazem hg add
  • M (modified) změněný
  • I (ignored) ignorovaný, uvedený v seznamu .hgignore
  • ! (missing) postrádaný, většinou ručně smazaný
  • R (removed) odebraný - příkazem hg remove
  • ? (unknown) neznámý, přidaný do repozitória ručně
  • C (clean) čistý, beze změn

4.3. Vytvoření repozitória a repozitáře

Jak bylo již uvedeno v Předmluvě (odst. 1.7), budeme z didaktických důvodů rozlišovat mezi repozitářem a repozitóriem. Za repozitář budeme považovat složku .hg, za repozitórium její kořenový adresář.

Repozitórium můžeme vytvořit z existující složky, kde umístíme repozitář, nebo vytvoříme složku repozitória i repozitáře současně.

Můžeme si vybrat jeden ze tří způsobů:

Verpánek: File > Nový repozitář…

Průzkumník: TortoiseHg > Vytvořit repozitář z kontextového menu

Příkaz: thg init

Repository Init dialog

Dialogové okno pro vytvoření repozitáře či repozitória

Je dobré ponechat volbu Vytvořit specifické soubory (.hgignore, …) zatrženou a nezatrhávat Vytvořit repozitář kompatibilní s Mercurialem < 1.7 pokud k tomu nemáme pádný důvod.

Po stisku tlačítka Vytvořit, vytvoří Mercurial v našem repozitóriu složku repozitáře .hg. Zde si program ukládá všechna verzovaná data. Se složkou .hg nikdy přímo nepracujeme. Při zadávání příkazů se odkazujeme na repozitórium.

Nové repozitórium se také přidá do Seznamu repozitářů , pokud tuto operaci provedeme z Verpánku. Nezařazená repozitória můžete přidat do Seznamu repozitářů výběrem File > Otevřít repozitář… nebo je můžete přetáhnout z Průzkumníka.

Poznámka

Mezi právě aktuálními revizemi a repozitóriem existuje tajemná symbióza. Jak později poznáme, mění se obsah repozitória podle aktuálně nastavené revize. Ponecháme-li aktuální starší revizi, můžeme případné nověji přidané soubory v Průzkumníku Windows (tedy v repozitóriu) nevidět!

Varování

Ručně editovat soubory ve složce .hg je nebezpečné, může dojít k poškození repozitáře. Jedinou výjimkou je konfigurační soubor .hg/hgrc.

4.4. Přidávání souborů

Nyní je třeba aplikaci Mercurial sdělit, které soubory mají být sledovány. Lze to provést více způsoby:

  1. Verpánek: ikonou Commit otevřeme úkonovou kartu, pravým poklepem zvýrazníme vybraný soubor a z kontextového menu vybereme Add . To změní status souboru na ‚A‘ a po zatržení nabídky barva názvu zezelená.
  2. Explorer: vybereme TortoiseHg > Přidat soubory… v kontextovém menu vybraného souboru. Otevře se okno pro zadání výběru a potvrzení operace add. Stejným způsobem lze vybrat nabídku TortoiseHg > Status souboru. V otevřeném dialogovém okně můžeme vybrat zamýšlené soubory.
  3. Příkazem: thg status
  4. Přidávání souborů v samostatném kroku můžeme přeskočit a přidat je implicitně v rámci příkazu TortoiseHg > Commit…. Otevře se podobné dialogové okno jako u volby Status souboru. Vybereme zařazovaný, dosud nesledovaný soubor a volbu potvrdíme tlačítkem Commit.

4.5. Ignorování souborů

Ve svých repozitóriích můžeme mít z různých důvodů soubory, jež nechceme sledovat. Tyto soubory lze označit jako ignorované a to rovněž několika způsoby.

  1. Verpánek: aktivujte panel Commit, na zvýrazněném souboru vyvolejte kontextové menu a vyberte Ignorovat….
  2. Explorer: vyberte TortoiseHg > Ignorované soubory
  3. Příkazem thg hgignore otevřeme dialogové okno pro filtrování souborů.

Pro vybraný soubor určíte druh filtru (Glob nebo Regexp) a zadáte Přidat. Změny filtru ignore se projeví okamžitě.

Poznámka

Soubor .hgignore, obsažený repozitóriu, je normálně sledován (checked in).

Poznámka

Je dobré, nemít v repozitóriu mnoho neznámých souborů, protože se potom snadno zapomene přidat důležité nové soubory. Doporučuje se udržovat soubor .hgignore v aktuálním stavu.

4.6. Commit

Předání změn do repozitáře provedete následujícím způsobem:

Verpánek: Poklepem na pracovní adresář se otevře panel pro předání změn (commit), případně tento panel můžete aktivovat výběrem ikony s fajfkou.

Explorer: Pravým poklepem kdekoliv ve složce otevřete kontextové menu a vyberete dialogové okno TortoiseHg > Commit….

Příkaz: thg commit

Napíšete předávací zprávu, vyberete soubory, které chcete předat a přikážete Commit. Předchozí předávací zpráva bude uvedena v roletkovém seznamu; v případě potřeby ji lze s úpravou použít.

Commit dialog

Zadávací okno TortoiseHg > Commit

4.7. Sdílení repozitářů

Mercurial podporuje mnoho různých modelů spolupráce. Tento odstavec popisuje pouze jeden z nich: model s centrálním repozitářem.

Na místě, kam mají přístup všichni členové skupiny se vytvoří centrální repozitář, kam všichni posílají své změny, přičemž jeden člen kolektivu má za úkol na tento repozitář dohlížet.

Tento centrální repozitář může vzniknout jako nový repozitář nebo jako kopie (klon) již někde jinde vytvořeného repozitáře. Klonování repozitáře lze provést trojím způsobem:

Verpánek: Z menu vyberete File > Klonovat repozitář…

Explorer: Z kontextového menu vyberete TortoiseHg > Klonovat…

Příkaz: :command::thg clone.

Potom zadáte cestu k destinaci a zavelíte Klonovat.

Clone dialog

Okno akce Clone

Vytváříte-li centrální repozitář klonováním, potom nemusíte kopírovat celý obsah repozitória. Zatržením volby Neaktualizovat nový pracovní adresář zajistíte kopírování pouze složky .hg, která obsahuje úplný přehled revizí projektu.

Další členové skupiny si tento centrální repozitář naklonují již s nezatrženou volbou Neaktualizovat nový pracovní adresář. Tím si do svého lokálního repozitoria přenesou i pracovní soubory.

Klonováním vzniká příbuzenský vztah mezi repozitáři. Akce pull a commit lze provádět pouze mezi příbuznými repozitáři. Příbuzný repozitář na jiném počítači je repozitář vzdálený (remote).

4.8. Práce s repozitářem

Předpokládejme, že jste provedl nějaké změny. Zda máte v (pomyslném) pracovním adresáři nepředané (nekomitované) změny zjistíte snadno:

Verpánek: V panelu úlohy Commit prohlédneme seznam souborů na levé straně.

Šifry A (přidaný - zelená) a M (upravený - modrá) označují soubory, které lze komitovat přímo. Soubory označené ? (neznámý - fialková), ! (postrádaný - červená) či R (odebraný - červená) nutno nejprve přidat či vrátit do sledování.

Spodní pole vpravo karty Commit vám zobrazí i změny v jednotlivých souborech nebo můžete použít svůj nástroj pro zobrazování rozdílů (kdiff3). V Mercurialu lze provést řadu komitů předtím, než se rozhodnete pro sdílení svých změn s repozitářem centrálním.

Explorer: Složky a soubory vašeho repozitória jsou označeny jednou z překryvných ikon. Ty vám napoví, v jakém stavu se ten či onen soubor nebo složka nachází.

Overlay Icons

Překryvné ikony

Příkazový řádek: Příkazem thg commit vyvoláte dialogové okno.

Jste-li připraven zveřejnit své změny, provedete následující:

  1. Předáte změny do svého lokálního repozitáře (provedete komit).
  2. Aktivujete kartu pro synchronizaci, vyberete cestu k centrálnímu repozitáři a stisknete tlačítko Pull, čímž vydáte příkaz ke stažení možných změn z tohoto repozitáře.
  3. Byly-li nějaké changesety staženy, provedete jejich případné sloučení s vašimi lokálními změnami a provedete jejich komit do repozitáře.

V přehledu changesetů zviditelníte ten, se kterým chcete sloučení provést, aktivujete kontextové menu a vyberete Merge with local…. V dialogovém okně pro sloučení stisknete Sloučit (merge) a posléze Commit. 4. Sloučenou práci prověříte svým testovacím postupem. 5. V kartě pro synchronizaci vyberete cestu k centrálnímu repozitáři a pošlete do něho své změny tlačítkem Push.

Poznámka

Sloučení lze bezpečně v případě potřeby opakovat.

Spolupráce prostřednictvím Mercurialu je snadná, rychlá a produktivní. Více o Mercurialu na jeho stránkách wiki.