3. Co je nového

3.1. TortoiseHg 2.0

3.1.1. Filosofie

Mezi TortoiseHg 1.0 a TortoiseHg 2.0 došlo k následujícím změnám.

3.1.1.1. Verpánek

Chtěli jsme mít jedinou aplikaci, která by měla přístup k téměř všem funkcím TortoiseHg (a Mercurialu) a která by šla spustit zástupcem z plochy, nebo výběrem z menu Start. Za tím účelem jsme vyvinuli aplikaci Workbench neboli Verpánek.

Verpánek podporuje otevření a zobrazení více než jednoho repozitáře na kartách, aktivovaných poklepem na položce seznamu v panelu Seznam repozitářů.

Každá repozitářová karta je propojena s úkonovými kartami (Podrobnosti revizí, Commit, Synchronizace, Hledat), které se zobrazují v úkonové ploše pod Přehledem revizí. Tyto karty se přepínají poklepem na ouška, ikonami v úkonové liště nebo výběrem nabídky v roletce View.

K disposici jsou také tři parkovatelné panely - Seznam repozitářů, Fronta oprávek a Výstupní konzola* (Output Log). První zobrazuje stromovou strukturu lokálních repozitářů v počítači, druhý panel se použije při manipulaci s oprávkami (patches) a třetí panel zobrazuje aktuálně prováděné příkazy a lze jej použít i pro zadávání příkazů.

3.1.1.2. Zobrazení příkazového řádku Mercuriálu

Ve snaze poučit uživatele o použitých příkazech Mercuriálu, jsou téměř všechny příkazy souběžně zobrazovány ve výstupní konzole, včetně následného výstupu z Mercuriálu.

3.1.1.3. Nástroj Resolve, uvážlivá sloučení

TortoiseHg 2.0 zavádí dialog ‚resolve‘ pro řešení konfliktů při slučování souborů. Ukazuje uživateli všechny soubory, které potřebují řešení i soubory již rozřešené, umožňujíce kontrolu sloučení.

Za podpory procedury ‚resolve‘ mohou být jednotlivá sloučení restartována tak často, jak je pro správné sloučení souborů zapotřebí.

Proceduru ‚resolve‘ použije TortoiseHg implicitně k řešení všech konfliktů. Pokud je úspěšné, dojde k automatickéhu sloučení, pokud ne, musí konflikt vyřešit uživatel.

3.1.1.4. Zlepšené odkládání souborů

Tortoise 2.0 obsahuje nový odkládací nástroj zvaný ‚shelve‘ který umí přesouvat změny z pracovního adresáře do šelfového souboru (shelf file) nebo do neaplikované oprávky MQ (MQ patch).

3.1.1.5. Sady revizí

Lištu pro nastavení filtru v Repozitory Explorer jsme ve Verpánku nahradili Pracovní lištou filtru pro výběr sad revizí (implicitně není zobrazena). Sady revizí byly zavedeny v Mercurialu 1.6 a byly v každém dalším vydání integrovány se stoupajícím počtem příkazů. Je to mocný dotazovací nástroj pro vyhledávání revizí v repozitáři.

Verpánek obsahuje také editor sady revizí, který je zdrojem poučení o dostupných klíčových slovech a jejich argumentech, a má schopnost doplňovat otevřené závorky, počatá slova a další.

Příchozí a odchozí changesety jsou nyní v TortoiseHg 2.0 zobrazeny jako sady revizí. V předchozích verzích byly reprezentovány komentářem ke grafu.

3.1.2. Technologie

3.1.2.1. Qt a PyQt

Téměř všechny nástroje a dialogy v TortoiseHg 2.0 byly přepsány pro využití vynikajících aplikací Qt a PyQt.

3.1.2.2. QScintilla2

TortoiseHg používá značnou měrou editovací komponenty aplikace QScintilla2 pro: * zobrazení souborů a diffů se zvýrazněním syntaxe * zobrazení anotací se zvýrazněním syntaxe * editaci komitových zpráv s automatickým dokončováním jmen souborů a zdrojových symbolů * editaci řetězců sad revizí (revision set strings) s doplňováním závorek a s automatickým dokončováním.

Délku tabulátoru lze nastavit v konfiguračním nástroji, zatímco délky řádků a viditelnost „white space“ jsou ovládány z kontextových menu.

3.1.2.3. Zjišťování stavu repozitáře a konfigurace

Verpánek a další aplikace, jako např. nástroj commit prohledají repozitáře ve vašem počítači aby v nich nebo v konfiguračních souborech zjistily změny a automaticky v případě potřeby aktualizovaly běžící aplikace. Téměř všechny konfigurační změny jsou okamžitě účinné kromě povolení či zakázání extenzí Mercurialu. Změny nastavení extenzí obvykle vyžadují restart aplikace.

3.1.2.4. Okamžité hlášení chyb

Před TortoiseHg 2.0 bylo hlášení chyb zapisováno do stderr v okamžiku jejich vzniku a stderr byl odchycen a skenován pro předání uživateli při ukončení aplikace. I když se tímto mechanizmem získalo mnoho cenných chybových zpráv, bylo možné jen výjimečně zjistit, které operace chybu způsobily.

Pro TortoiseHg 2.0 byl vytvořen generický manipulátor výjimek, který odchytí všechny výjimky Pythonu, které by jinak zůstaly kódem aplikace neošetřeny. To umožňuje zobrazit záznamy výjimek téměř okamžitě po jejich vzniku (po krátké pauze potřebné pro shromáždění za sebou jdoucích výjimek). Očekává se, že chybové zprávy budou napříště obsahovat lepší instrukce pro reprodukci nebo alespoň souvislosti pro zpětné záznamy.

3.1.2.5. Načtení grafu dle požadavku

Za účelem pružného zobrazení načítá grafový algoritmus při akci refresh implicitně jenom několik stovek revizí a poté načítá pouze požadované revize. Při procházení Přehledem revizí může dojít k jeho trhavému zobrazení. Tento projev lze odstanit příkazem Načíst všechny revize v menu View.