Verpánek
========

.. module:: workbench.dialog
  :synopsis: Primary TortoiseHg application

Verpánek neboli Workbench je primární aplikace TortoiseHg. Umožňuje procházet lokálními repozitáři, předávat (commit) změny do repozitáře , provádět vyhledávání, synchronizaci s jinými repozitáři a vykonávat různé provozní úlohy. Téměř každá procedura Mercurialu je dostupná z Verpánku. Všechna tlačítka pracují s aktuálním repozitářem. 

.. figure:: figures/workbench.png
    :alt: Workbench



Pod klasickou lištou hlavního menu (File, View, Repozitář, Help) se nachází poutec s nástrojovými lištami (Editovací, Parkovací, Úkonová, Uživatelská). Složení jednotlivých lišt bude uvedeno níže.

V základní konfiguraci (s vypnutými nástroji Parkovací lišty) má okno Verpánku dvě části - Přehled revizí nahoře a Úkonovou plochu dole. Konfigurace úkonové plochy se mění podle právě aktivovaného úkonu (Podrobnosti revizí, Commit, Hledat a Synchronizovat).


K uvedeným rezidentním plochám lze ve Verpánku aktivovat tři přemistitelné panely - Seznam repozitářů, Fronta oprávek (Patch Queue) a Output Log. 


Hlavní panely (widgety) Verpánku jsou tyto:

:guilabel:`Přehled revizí`
  Panel pro zobrazení vícero repozitářů v kartách. Ve sloupcích jsou uváděny
  základní informace o každém changesetu neboli revizi. Lze si nastavit,
  které sloupce mají být viditelné (:menuselection:`View >
  Vybrat sloupce přehledu...`) a v jakém pořadí. 
:guilabel:`Seznam repozitářů - repozitórií`
  Lze aktivovat ikonou nebo volbou :menuselection:`View > Zobrazit seznam
  repozitářů`. Volba :menuselection:`View >Nastavení seznamu
  repozitářů > Show Paths`  umožní zobrazení nejenom jmen
  repozitářů ale i cest k nim.
:guilabel:`Úkonová plocha`
  Nástroje úkonové plochy lze aktivovat ze třech míst:

  * jako položku roletky *View*
  * výběrem ikony v Úkonové nástrojové liště
  * výběrem ouška na okraji Úkonové plochy - zobrazení oušek lze 
    zapnout/vypnout  v prostředí *File > Settings > Verpánek > Úkonová lišta*
:guilabel:`Output Log`
  Tento přemístitelný panel, který vyvoláme tlačítkem s ikonou
  nebo výběrem :menuselection:`View > Show Outpt Log` poskytuje
  uživateli informaci o příkazech Mercurialu, které byly 
  provedeny během stávající seance. Můžete jej také použít jako
  příkazový řádek pro přímé zadávání příkazů Mercurialu. V
  určitých situacích také zobrazuje chybová hlášení. Okno
  panelu se smaže zavřením Verpánku.	 
	 
  
Hlavní menu
-----------

Standardní lišta s roletkovými nabídkami pro přístup k nástrojům a pro spouštění různých úloh. 

:guilabel:`File`

    .. figure:: figures/file-menu.png
        :alt: File menu
		
  
:guilabel:`View`
    
    .. figure:: figures/view-menu.png
	    :alt: View menu
		
:guilabel:`Repozitář`
	
    .. figure:: figures/repository-menu.png
        :alt: Repository menu
		
:guilabel:`Help`	
  Obsahuje info o programu a popis Verpánku. 
	

Editovací lišta
---------------

    .. figure:: figures/edit-toolbar.png
        :alt: Edit Toolbar

:guilabel:`Refresh current repository`
  Znovu načíst (refresh) přehled revizí aktuálního repozitáře.
:guilabel:`Přejít k aktuální revizi`:
  Přejít k revizi, zadané jako aktuální.	
:guilabel:`Přejít k určené revizi`:
  Přejít k libovolné určené revizi.
:guilabel:`Zpět`:
  Vrátit se k předchozí vybrané revizi.
:guilabel:`Vpřed`
  Přejít k následné revizi. 
:guilabel:`Pracovní lišta filtru`
  Ukázat a aktivovat nástrojovou lištu pro editaci filtru.
:guilabel:`Aktualizace pracovního adresáře`
  Dialog pro aktualizaci zadané revize.	 

Pracovní lišta filtru
---------------------

Tato lišta slouží pro zadávání vyhledávacích vzorů při vyhledávání specifikovaných revizí.
  
.. figure:: figures/filter-toolbar.png
    :alt: Filter Toolbar

Zobrazení této lišty (Filter Toolbaar) aktivujeme buď tlačítkem s ikonou v editovací liště nebo přepínačem :kbd:`Ctrl+S`. Lišta obsahuje následující sadu procedur (zleva doprava):

:guilabel:`Clear`
	 Smaže aktuální dotaz (query). Vlastně anuluje zadání filtru.
:guilabel:`Filter entry`
	 Zde lze zapsat filtrovací podmínku. Tento widget je rozvinovací
	 seznam, obsahující přehled předchozích filtrovacích podmínek.
:guilabel:`Trigger revision set query`
	 Aplikuje dotaz na zadanou sadu revizí.
:guilabel:`Open advanced query editor`
	 Otvírá dialogové okno "Revision Set Query". Zde můžete upřesnit svůj dotaz.
:guilabel:`Delete`
	 Smaže zadaný vyhledávací dotaz (query).
:guilabel:`Filtr`
	 Přepínač pro aktivaci filtru. Aktivní filtr prosévá changesety a
	 barevně označí ty, které podmínce nevyhovují.
:guilabel:`Hidden`
	 Ukázat/Skrýt skryté changesety	 
:guilabel:`Graft`
	 Přepínač viditelnosti gráftu 
:guilabel:`Větev`
	 Výběrový seznam s možností zadat typ větve - aktivní, uzavřené, všechny
:guilabel:`Custom Filter Combo`
	 Rozvinovací seznam jednotlivých typů větví.
  
V situaci, kdy je zobrazován seznam příchozích changesetů, vynoří se na počátku filtrovací lišty dvě tlačítka:

   :guilabel:`Accept`
	  Přijmout (pull) changesety z prohlíženého svazku. 
  
   :guilabel:`Reject`
	  Odmítnout changesety z prohlíženého svazku.
  
Verpánek se pokusí nalézt zadanou vyhledávací frázi v repozitáři, porovnávaje ji s tagem, záložkou, názvem větve, hešem changesetu nebo s číslem revize. Není-li žádná shoda nalezena, zjistí Verpánek, zda fráze obsahuje závorky. Pokud ne, předpokládá Verpánek, že fráze je klíčovým slovem a provede hledání :command:`keyword ()`. Jsou-li závorky zjištěny, předpokládá Verpánek, že fráze je specifikací sady revizí a pokusí se sadu řešit.

Potřebujete-li provést hledání s klíčovým slovem, které obsahuje závorky, použijte příkaz :command:`keyword` ("fráze(foo)").	 

  
Parkovací lišta
---------------

Tato lišta zobrazí nebo skryje hlavní panely Verpánku.

   .. figure:: figures/dock-toolbar.png
       :alt: Dock Toolbar

:guilabel:`Zobrazit seznam repozitářů`
     Ve skutečnosti jde o seznam repozitórií
:guilabel:`Show Patch Queue`
     Zobrazit frontu oprávek
:guilabel:`Show Output Log`
     Zobrazit panel, který zaznamenává probíhající akce 
 


Úkonová lišta
-------------

   .. figure:: figures/task-toolbar.png
       :alt: Task Toolbar

Lišta (vpravo nahoře) je sestavena z ikon, které otevírají úkonové karty v úkonové ploše.
Při volbě Podrobnosti revizí a Commit se úkonová plocha rozdělí vertikálně na dvě části - Seznam souborů vlevo a pracovní plochy vybraného úkonu vpravo. Zbývající úkony (Synchronizovat a Hledat) mají rovněž své vlastní členění úkonové plochy.

:guilabel:`Podrobnosti revizí`
   Pracovní plocha této karty  se zkládá ze třech polí:
       
* Rozbalovací plocha (+/-) *Changeset* obsahuje údaje o číslu revize, zkrácený heš, souhrnný text zprávy komitu, jméno a email komitenta, datum komitu, informace o rodičích a dětech
* Textové pole se souhrnným i úplným textem zprávy komitu
* Anotace souboru, vybraného v seznamu souborů vlevo.

.. figure:: figures/revdetails-tasktab.png
	:alt: Revision Details


:guilabel:`Commit`
  Zde je možné přidávat nové soubory a provádět komit do repozitáře.

.. figure:: figures/commit-tasktab.png
	:alt: Commit Task Tab

:guilabel:`Synchronizovat`
 Umožňuje podrobné nastavení cesty ke vzdálenému repozitáři. Karta obsahuje rozšířenou nabídku synchronizačních úloh viz 5.9. Synchronizace.

.. figure:: figures/sync-tasktab.png
	:alt: Synchronise Task Tab


:guilabel:`Hledat`
     Slouží pro vyhledávání zadaného textu v souboru. 

.. figure:: figures/search-tasktab.png
	:alt: Search Task Tab


Mezi vybranou revizí nebo oprávkou v Přehledu revizí a úkonovou kartou Commit či Podrobnosti revizí existují tyto relace:

*  Poklep na revizi "Pracovní adresář" aktivuje kartu s úlohou Commit.
*  Poklep na kteroukoliv jinou revizi aktivuje kartu Podrobnosti revizí. 
 
Toto standardní chování lze potlačit klávesou :kbd:`Alt`, stisknutou před označením revize. Stávající panel zůstane potom zachován bez ohledu na to, jakou revizi či oprávku vyberete.



Výkonové implikace
------------------

Některá nastavení Verpánku mohou mít u velkých  repozitářů vliv na výkon.

:menuselection:`View > Vybrat sloupce záznamu ...`
	 Povolení sloupce :guilabel:`Změny` může být náročné na přepočet
	 repozitářů s rozsáhlými pracovními kopiemi, což může vést ke
	 zpomalení u rolování a oživení.
  
:menuselection:`Vew > Načíst všechny revize`
	 Normálně se při rolování revizemi postupně načítají dávky
	 changesetů, což může někdy způsobovat trhavé zobrazení. Načtení
	 všech changesetů najednou může vést k 'hladšímu' zobrazení.
	  

Kontextová menu revizí
----------------------

Pravý poklep na revizi v Přehledu revizí vyvolá různá kontextová menu v závislosti na počtu vybraných revizí. Kontextová menu se mohou také lišit v závislosti na typu vybrané revize (pracovní adresář, normální revize, oprávka mq). Dále uvádíme seznam všech existujících kontextových menu. 


**Vybrána jen jedna revize** (nikoliv pracovní)

  .. figure:: figures/single-revision-cmenu.png
     :alt: Single revision context menu
   
:guilabel:`Update...`
	 Aktualizovat pracovní adresář k označené revizi. Otevře se dialogové
	 okno s podrobnostmi o aktualizaci.
:guilabel:`Diff to parent...`
	 Zobrazí změny mezi aktuální a rodičovskou revizí v nastavenem
	 diffovém nástroji.
:guilabel:`Diff to local...`
	 Zobrazí změny  mezi vybranou revizí a pracovním adresářem.
:guilabel:`Browse at revision...`
	 Otevře okno "Manifest" se zobrazením všech složek a souborů vybrané
	 revize
:guilabel:`Similar revisions...`
	 Otevře okno "Najít shody" s nabídkou deseti volitelných parametrů
	 shody
:guilabel:`Merge with local...`
	 Otevře okno "Merge"  pro sloučení vybrané revize s pracovním
	 adresářem.
:guilabel:`Tag...`
	 Otevře okno pro zadání názvu vytvářeného tagu pro vybranou revizi.
:guilabel:`Bookmark...`
	 Otevře okno pro  zadání nazvu záložky pro vybranou revizi. Tato
	 volba je přístupná při povolené extenzi 'bookmarks'.
:guilabel:`Backout...`
	 Otevře okno "Backout" pro anulování vybrané revize. 
:guilabel:`Copy Hash`
	 Zkopíruje úplný heš vybrané revize do schránky. `V operačním systému X11 se do primárního výběru při označení revize automaticky kopíruje krátký heš; vlepí se stlačením prostředního tlačítka myši`. 
      
:guilabel:`Export`
	:guilabel:`Export patch`
		  Generuje oprávkový soubor, obsahující změny revize.
	:guilabel:`Email patch...`
		  Otevře okno pro odeslání emailu se změnami revize.
	:guilabel:`Archive...`
		  Otevře okno pro archivaci revize s možností generovat záložní
		  kopii revize.
    
 	:guilabel:`Bundle revision and descendants...`
		Vytvoří svazek a uloží jej do repozitória (kořenové složky repozitáře).       

	:guilabel:`Copy Patch`
		Zkopíruje oprávku  do schránky.

:guilabel:`Change Phase to ...`
	Nabídne výběr fáze: public, draft, secret
    
:guilabel:`Graft to local...`
	Otevře okno pro vytvoření gráftu.    

:guilabel:`Modify history`
   Přístupné jen při povolené extenzi MQ:
  
   :guilabel:`Unapply Patch`
		 Zrušit oprávku a vrátit se k rodiči. 
   :guilabel:`Import to MQ`
		  Importovat vybranou revizi do  fronty oprávek. 
   :guilabel:`Finish Patch`
		  Přemění oprávku MQ na normální changeset. 
   :guilabel:`Rename Patch`
		  Přejmenovat oprávku
   :guilabel:`Strip`
		  Odstranit vybranou revizi a všechny její potomky z repozitáře.
		  [#rcm1]_ 

**Vybrány dvě revize**

:guilabel:`Visual diff...`
	  Zobrazí vybrané revize v diffovém prohlížeči.
:guilabel:`Export diff...`
	  Otevře okno "Psát diffový soubor".
:guilabel:`Export selected...`
	  Pro zadané revize vytvoří oprávky (patches) a exportuje je do
	  zadané složky.
:guilabel:`Email selected...`
	  Otevře okno pro odeslání vybraných revizí.
:guilabel:`Copy selected as patch...`
	  Z vybraných revizí vytvoří oprávky a uloží je do schránky.    
:guilabel:`Export DAG range...`
	  Pro každou revizi vybraného rozsahu vytvoří oprávkový soubor a
	  uloží je v zadaném místě.
:guilabel:`Email DAG range...`
	  Otevře okno pro odeslání vybraného rozsahu changesetů ve formě
	  oprávek (patches).
:guilabel:`Bundle DAG range...`
	  Ze zadaného rozsahu vytvoří svazek oprávek a uloží je jako jediný
	  soubor.
:guilabel:`Bisect - Good, Bad...`
	  TODO, viz odstavec `bisect <#id10>`_ níže
:guilabel:`Bisect - Bad, Good...`
	  TODO, viz odstavec `bisect <#id10>`_ níže
:guilabel:`Compress history...`
	  Otevře okno, v němž lze zkomprimovat zadaný rozsah revizí. 
:guilabel:`Přejít ke společnému předkovi...`
	  ...
:guilabel:`Podobné revize ...`
      Otevře okno pro zadání parametrů pro hledání podobných revizí.   

**Vybrány více než dvě revize**

:guilabel:`Export selected...`
	  Vytvoří oprávkové soubory pro všechny vybrané revize.
:guilabel:`Email selected...`
	  Otevře okno pro odeslání vybraných changesetů.  
:guilabel:`Copy selected as patch`
	  Z vybraných revizí vytvoří oprávky a uloží je do schránky.   
:guilabel:`Přejít ke společnému předkovi`
	  viz
:guilabel:`Podobné revize ...`
	  Otevře okno pro zadání parametrů pro hledání podobných revizí. 
:guilabel:`Gráftovat výběr k lokální ...`
	  Přenést vybrané revize nad lokální revizi. 
	  
.. [#rcm1] Tento příkaz uloží odtržené revize do svazku souborů, které mohou  být později znovu použity. Viz také `Editing History <http://mercurial.selenic.com/wiki/EditingHistory>`_


Kontextové menu souboru
------------------------

Pravým poklepem na soubor v seznamu souborů (uprostřed dole) vyvoláme kontextové menu pro vybraný soubor:

:guilabel:`Diff to Parent`
	  Zobrazí změny mezi aktuální a rodičovskou verzí souboru v
	  nastavenem diffovém nástroji.
:guilabel:`Visual Diff to Local`
	  Zobrazí rozdíly mezi aktuální a lokální verzí souboru.
:guilabel:`View at Revision`
	  Otevře verzi souboru v nastaveném či vhodném textovém editoru [#f1cm1]_.
:guilabel:`Save at Revision`
	  Uloží soubor do zadané složky
:guilabel:`Edit Local`
	  Otevře soubor v nastaveném či vhodném textovém editoru.
:guilabel:`Open Local`
	  Otevře soubor v nastaveném či vhodném textovém editoru.
:guilabel:`Copy Path`
	  Zkopíruje cestu k souboru do schránky.		   
:guilabel:`Revert to revision`
	  Vrátí soubor ke stavu označené revize [#f1cm3]_.
:guilabel:`Historie souboru`
	  Ukáže revize, které měnily tento soubor [#f1cm2]_.   
:guilabel:`Porovnat revize souboru`
	  Otevře nové okno, kde lze porovnat kteroukoukoli revizi souboru s
	  libovolnou jinou revizí.


.. [#f1cm1] :menuselection:`File > Global Settings > TortoiseHg >
   Visual Editor`
.. [#f1cm2] Ve které revizi byl soubor smazán se neukáže, protože to je
   jenom "vnějšková" změna, která neovlivňuje historii souboru.
.. [#f1cm3] Nový obsah se objeví jako lokální změna a musí být předána
   (committed) repozitáři.

Pravý poklep na názvu souboru při aktivované úloze Commit vyvolá pro vybraný soubor odlišné kontextové menu:

-- **jde-li o upravené (M) soubory pracovního adresáře**:

:guilabel:`Diff to Parent`
	  Otevře diffový nástroj a zobrazí texty s označenými změnami.
:guilabel:`Copy Patch`
	  Zkopíruje oprávku (patch) do schránky.	
:guilabel:`Edit`
	  Otevře soubor ve vhodném textovém editoru.
:guilabel:`Open`
	  Otevře soubor v nastaveném textovém editoru.
:guilabel:`Copy Path`
	  Zkopíruje cestu k souboru do schránky.	
:guilabel:`Vrátit (revert)...`
	  Otevře okno, kde lze diferencovaně rozhodnout o zrušení změn
	  lokálního souboru (souboru pracovního adresáře).
:guilabel:`Historie souboru ...`
	  Otevře okno se zobrazením změn v jednotlivých revizích.	  
:guilabel:`Zapomenout`
	  Vyřadit soubor ze sledování.
:guilabel:`Označit / Odznačit`
	  Vložit / odebrat zatržítko.	
:guilabel:`Copy ...`
	  Kopírovat soubor do zadané destinace.
:guilabel:`Rename ...`
	  Přejmenovat soubor.	
	
-- **jde-li o neznámé (?) soubory pracovního adresáře**:

V tomto případě se nabídka skládá z Edit, Open, Copy Path, Add, Označit, Odznačit, plus

:guilabel:`Detect Renames ...`
	  Otevře okno pro nalezení přejmenovaných souborů.
:guilabel:`Detect Renames ...`
	  Otevře seznam ignorovaných souborů.
:guilabel:`Delete Unversioned ...`
	  Smazat neverzované soubory.			
     

Analýza zpráv komitů
--------------------

V poli +/- **Changeset** na kartě Podrobnosti revizí a Manifest jsou detekovány a podtrženy heše, adresy HTTP(s) a označení chybových zpráv, nalezené ve zprávách komitů. Tyto podtržené údaje jsou aktivní linky k changesetům v Přehledu revizí. 

URL adresy HTTP a HTTPS se podobně změní na klikatelné linky které se otevřou ve vašem implicitním webovém prohlížeči.

Linky k Issue Tracker jsou povoleny, pokud je to nastaveno v sekci 'tortoisehg' vašeho konfiguračního souboru. Protože lze nastavit pouze jeden issue tracker, je obvykle uváděn v souboru `.hg/hgrc`. Jsou dva klíče: issue.regex a issue.link. První definuje regex shody při výběru čísla problému, druhý definuje příkaz, který má být po určení čísla problému proveden.

Do issue.regex můžete vložit skupiny a odpovídajících {n} znaků (tokens) do issue.link (kde n je pozitivní celé číslo). {0} odkazuje na celý řetězec, porovnávaný issue.regexem, zatímco {1} odkazuje na první skupinu, atd. Nejsou-li v issue.linku nalezeny žádné {n} znaky, je připojen celý porovnávaný řetězec.

Příklady::

   BitBucket:
   issue.regex = #(\d+)\b
   issue.link = http://bitbucket.org/<your project and repo>/issue/{1}/

   Mercurial:
   issue.regex = \bissue(\d+)\b
   issue.link = http://bz.selenic.com/show_bug.cgi?id={1}

Konzola Output Log
------------------

V konzole, vestavěné do přemístitelného panelu Output Log, lze spouštět příkazy Mercurialu (hg), TortoiseHg (thg), řadu speciálních příkazů a omezený počet "shell commands". Příkazy se vždy provedou v kořenovém adresáři aktuálního repozitáře (repozitóriu). Prompt je aktualizován pro udržení souvislosti.

Začíná-li příkaz 'hg', je proveden v prováděcím prostředí TortoiseHg; což znamená, že výstup je poslán do Output Log ale požadavky na vstupy jsou obslouženy dialogovými okny.

Začíná-li příkaz 'thg', je zadaný příkaz proveden v novém okně pro tentýž proces. Například 'thg ci' otevře nové okno s procedurou pro předání změn (commit) do aktuálního repozitáře.

Je-li zadaným příkazem 'clear' nebo 'cls' smaže se obsah konzoly.

Příkaz 'exit' toto okno zavře.

.. note::
   Otherwise, the command line is forwarded to your platform’s default command shell with a limited execution context. There is no stdin while stdout and stderr are piped to the output log.

Klávesová navigace
------------------

:kbd:`Ctrl-P`
   Přesun do rodičovské revize pracovního adresáře
:kbd:`Ctrl-D`
   Zobrazit visuální diffy pro vybraný changeset nebo soubor
:kbd:`Ctrl-S`
   Přepínač mezi sadou revizí a lištou filtru.

Viz také `KeySequences <https://bitbucket.org/tortoisehg/thg/wiki/KeySentences>`_ na stránkách Wiki. 


Nastavitelné možnosti
---------------------

Nastavitelné parametry Verpánku  lze zadat v dialogu  :menuselection:`File > Settings > Verpánek` viz odstavec 6.1.2 kapitoly 6. Nastavení parametrů.



Spuštění z příkazového řádku
----------------------------


   thg log [OPTIONS] [FILE]

   aliases: history, explorer, workbench

   workbench application

   use "thg -v help log" to show global options

.. vim: noet ts=4
