Changelog
==========

.. module:: changelog.dialog
    :synopsis: Dialog used to view log

Operačním prostorem nástroje changelog je pole v horní části okna **Průzkumníka repozitáře**. Používá se k zobrazení verzí (changesetů) a k jejich správě.
Okno procedury obsahuje přehledný graf, v němž lze vidět u každé změny vztah rodič-dítě. U každé verze lze také prohlížet změny souborů. 

.. figure:: figures/log.png
	:alt: Changelog

	Prohlížeč repozitáře s vypnutou nástrojovou lištou


Stručný popis příkazů v liště hlavní nabídky:

	:guilabel:`Nástroje`
		Otevře přístup k dalším osmi příkazům TortoiseHg
	:guilabel:`Zobrazení`
		Přepínače viditelnosti nástrojových lišt a aktualizace pohledů
	:guilabel:`Navigovat`
		Nástroj pro výběr určitých changesetů v historii repozitáře
	:guilabel:`Synchronizovat`
		Přístup k synchronizačním funkcím
	:guilabel:`Nápověda`
		Přístup k otevření webového prohlížeče a informaci "O programu"

Tlačítka nástrojové lišty zleva doprava: 

	:guilabel:`Obnovit`
		Znovu načíst historii revizí (pro komit z jiného okna, atp)
	:guilabel:`Nastavit značky`
		Odstranit značky pro 'nové', 'příchozí' a 'odchozí' revize a vrátit původní
	:guilabel:`Fronta oprávek`
		Přepíná zobrazení panelu MQ. Toto tlačítko je viditelné jen při umožněné extenzi MQ. 
	:guilabel:`Commit`
		Otevře samostatné okno 'commit'
	:guilabel:`Datamine`
		Otevře okno pro zkoumání dat
	:guilabel:`Obnova`
		Otevře okno s funkcemi obnovy
	:guilabel:`Server`
		Otevře okno pro spuštění serveru
	:guilabel:`Shelve`
		Otevře okno pro odložení změny
	:guilabel:`Větev oprávky`
		Přepíná zobrazení panelu Větev oprávky, pokud je umožněna extenze pbranch.
	:guilabel:`Načíst další`
		Načíst do zobrazení dalších *n* revizí
	:guilabel:`Načíst všechny`
		Načíst všechny zbývající revize do zobrazení

Synchronizační lišta
---------------------

.. figure:: figures/syncbar.png
	:alt: Changelog

	Synchronizační prvky v Průzkumníku repozitáře


Zleva doprava:

	:guilabel:`Příchozí`
		Stáhnout příchozí changesety ze vzdáleného repozitáře, uložit je v dočasném svazku a zobrazit je v náhledu. Příchozí changesety jsou v grafu revizí označeny šipkou dolů.
 	:guilabel:`Přijmout`
		Přijmout changesety ze zobrazeného svazku. Toto tlačítko je citlivé jen po realizovaném náhledu. Nastavení "Po akci pull" je při provádění tohoto příkazu respektováno.
	:guilabel:`Odmítnout`
		Odmítnout zobrazené changesety. Toto tlačítko je citlivé jen po realizovaném náhledu. 
	:guilabel:`Pull`
		Převzít příchozí changesety ze vzdáleného repozitáře, potom uplatnit nastavení "Po akci pull" (viz dále).
	:guilabel:`Import`
		Otevřít dialog pro import jedné či více oprávek
	:guilabel:`Odchozí`
		Určit odchozí changesety, které mají být odeslány  do vzdáleného repozitáře. Odchozí changesety jsou označeny šipkou nahoru.
	:guilabel:`Push`
		Odeslat odchozí changesety do vzdáleného repozitáře.
	:guilabel:`Email`
		Odeslat odchozí changesety do vzdáleného repozitáře emailem.
	:guilabel:`Stop`
		Zastavit probíhající transakci. Tlačítko je citlivé jen u odchozích příkazů.

Napravo od tlačítka Stop je rozbalovací seznam obsahující všechny nastavené cesty k jiným repozitářům. Implicitně zobrazená cesta musí být předem nastavena. Podrobnosti o stanovení URL pro vzdálené repozitáře viz `hg.1.html#urls <http://www.selenic.com/mercurial/hg.1.html#urls>`_ .

Napravo od rozbalovacího seznamu je přepínač :guilabel:`Po akci pull`, v němž lze nastavit *Nic* nebo *Aktualizovat* po úkonu pull, spuštěného ze synchronizační lišty. Další volby (fetch, rebase) lze do tohoto přepínače přidat připuštěním extenze v konfiguračním souboru. .

Napravo od přepínače :guilabel:`Po akci pull` je tlačítko :guilabel:`Nastavení`. Otevírá okno pro konfiguraci repozitáře, kde na záložce :guilabel:`Sync` lze přidat další možnosti do přepínače "Po akci pull" a rovněž lze zde zadat cesty ke vzdáleným repozitářům.

Changesety, přidané do repozitáře po otevření průzkumníka repozitáře, jsou v grafu označeny zelenými hvězdičkami. Týká se to posledních komitů, přijmutých changesetů a aplikovaných oprávek. Šipky a hvězdičky z grafu odstraníme použitím volby :guilabel:`Zobrazení -> Obnovit původní značení`.

.. note::

    Ke smazání nových, příchozích a odchozích značek z grafu changesetu použijte :guilabel:`View -> Reset Marks`

Vyhledávací lišta
-----------------

.. figure:: figures/searchbar.png
	:alt: Changelog

	Prvky vyhledávací lišty

Vyhledávací lišta umožňuje rychlé nastavení filtrů. Tlačítka zleva doprava (changeset = revize):

	:guilabel:`Vše`
		Zobrazit všechny changesety v repozitáři. Tato volba vlastně odstraní všechny filtry.
	:guilabel:`Značené`
		Zobrazit pouze changesety s tagy
	:guilabel:`Předci`
		Zobrazit pouze předky aktuálně vybraného changesetu. 
	:guilabel:`Rodiče`
		Zobrazit pouze rodičovské revize pracovního adresáře. Nebude-li probíhat "sloučení", bude to jenom jedna verze.
	:guilabel:`Čela`
		Zobrazit jen čela (heads) v repozitáři.
	:guilabel:`Sloučení`
		Zobrazit pouze changesety vzniklé sloučením (changesety se dvěma rodiči).
	:guilabel:`Skrýt sloučení`
		Zatržítko pro nezobrazování sloučených changesetů 
	:guilabel:`Větve...`
		Výběrový seznam pojmenovaných větví v repozitáři. Jména lze nastavit v *Nastavení repozitáře  -> Průzkumník repozitáře -> Mrtvé větve*.
	:guilabel:`Výběrové roletky`
		Na konci lišty je výběrový seznam pěti různých typů filtrů. Po určení typu filtru se do vedlejšího políčka zadá vyhledávací text příslušného typu a klepne se Enter.

	:guilabel:`Sada revizí`
		Prozkoumat uživatelský text jako sadu revizí. Určení sady revizí - viz `hg.1.html#revisions <http://www.selenic.com/mercurial/hg.1.html#revsets>`_. 
	:guilabel:`Vzory souborů`
		Prohledat seznam pro zadané jméno souboru. Určování vzorů jmen souborů - viz `hg.1.html#patterns <http://www.selenic.com/mercurial/hg.1.html#patterns>`_ 
	:guilabel:`Klíčová slova`
		Prohledat seznam pro klíčové slovo, které se porovnává s metadaty changesetů (komitent, zpráva, atp).
	:guilabel:`Datum` 
		Prohledat seznam pro datumový interval. Jeho určování - viz `hg.1.html#dates <http://www.selenic.com/mercurial/hg.1.html#dates>`_
	:guilabel:`Uživatel`
		Prohledat seznam pro zadaného uživatele nebo komitenta.

Součástí textového pole je rozbalovacící seznam s historií zadaných vyhledávacích textů.


Podrobnosti grafu
-----------------

Sloupec **Graf** ukazuje vztahy dítě-rodič pro všechny revize v historii repozitáře. Tento sloupec se rozšiřuje podle potřeby.

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

Některé nabídky v Průzkumníku repozitáře by se u velkých repozitářů neměly používat, protože mohou ovlivnit vykon aplikace.

* :menuselection:`Zobrazení -> Barva podle větve` 
	Nakreslení barevného grafu vyžaduje, aby prohlížeč revizí sledoval název větve každé revize, což může způsobit zpomalení aktualizací. 
* :menuselection:`Zobrazení -> Kompaktní graf` 
	Tato volba může být příčinou pomalejších aktualizací a méně přesného vykreslování grafu. 
* :menuselection:`Zobrazení -> Vybrat podrobnosti -> Změny` 
	Výpočet hodnot tohoto sloupce může být náročný u repozitářů s velkými pracovními kopiemi, což může způsobovat zpomalení jak aktualizací, tak rolování. 

	
Kontextové nabídky u revizí
---------------------------

Pravý klik na zvýrazněném řádku changesetu otevře kontextovou nabídku:

	:guilabel:`Otevřít VDiff`
		Otevřít změnu v nástroji "vizuální diff". 
	:guilabel:`Zobrazit změny`
		Otevřít changeset v diffovém prohlížeči "status".
	:guilabel:`VDiff k aktuální`
		Zobrazit změny mezi označenou revizí a aktuálním pracovním adresářem.
	:guilabel:`Kopírovat hash`
		Zkopírovat hash označené revize do schránky.
	:guilabel:`Poslat sem`
		Provádí ekvivalent příkazu 'push -r <rev>'. Tato volba je dostupná jen u changesetů, označených jako odchozí.
	:guilabel:`Poslat tuto větev`
		Provádí ekvivalent příkazu 'push --new-branch --branch <branch>'. Tato volba je dostupná jen u changesetů, označených jako odchozí.
	:guilabel:`Aktualizovat...`
		Aktualizovat pracovní adresář k této revizi. 
	:guilabel:`Sloučit s ...`
		Sloučit s vybranou revizí. 
	:guilabel:`Odvolat`
		Vytvořit rušící changeset pro vybranou revizi.
	:guilabel:`Revert`
		Vrátit pracovní kopii k obsahu vybrané revize bez aktualizace rodičovské revize pracovního adresáře. Používat opatrně.
	:guilabel:`Exportovat`
		:guilabel:`Export oprávky`
			Generovat oprávkový soubor obsahující změny této revize
		:guilabel:`Email oprávky`
			Poslat změny této revize emailem. 
		:guilabel:`Svazek revize:tip`
			Vytvořit svazek obsahující revize od označené po "tip". 
		:guilabel:`Archivovat...`
			Otevřít dialog pro archivování vybrané revize, čímž je umožněno vytvořit záložní kopii repozitáře. 
	:guilabel:`Tag`
		:guilabel:`Přidat/odebrat tag`
			Otevřít dialog pro přidání/odebrání tagu. 
		:guilabel:`Přidat/Přemístit/Odebrat záložku`
			U vybrané revize otevře dialog pro vytvoření záložky.
			*Pro tuto volbu je nutné umožnit extenzi "záložka"*
		:guilabel:`Přejmenovat záložku`
			*Pro tuto volbu je nutné umožnit extenzi "záložka"*
	:guilabel:`Fronty Mercurialu`
		:guilabel:`Importovat revizi do MQ`
			Importovat vybranou revizi do aktuální fronty oprávek (patch queue). Platí jen pro qbase nebo vybranou čelní revizi. *Volba je viditelná jen při umožněné extenzi MQ*
		:guilabel:`Odtrhnout revizi...`
			Odebrat z repozitáře vybranou revizi a všechny její potomky [#rcm1]_. *Volba je viditelná jen při umožněné extenzi MQ*
		:guilabel:`Transplant to local`
			Přenést vybranou revizi do aktuálního pracovního rodiče. *Volba je viditelná jen při umožněné extenzi 'transplant'*
	:guilabel:`Bisect`
		:guilabel:`Vrátit`
			Znovu nastavit stav rozdělení. Viz odstavec`bisect <#id10>`_ dole.
		:guilabel:`Označit jako dobré`
			Označit changeset jako dobrý
		:guilabel:`Označit jako špatné`
			Označit changeset jako špatný
		:guilabel:`Přeskočit testování`
			Přeskočit testování tohoto changesetu

Klikneme-li pravou myší na jiném než zvýrazněném řádku, dostaneme další kontextovou nabídku příkazů, které pracují s rozsahy revizí.

	:guilabel:`Diff odsud k vybranému`
		Otevře okno "status" s kumulovanými změnami zadaného rozsahu changesetů. Prohlížeč umožňuje uložit vybrané porce změn do souboru.
	:guilabel:`VDiff odsud k vybranému` 
		Otevře okno "VDiff" s kumulativními změnami zadaného rozsahu changesetů.
	:guilabel:`Email odsud k vybranému`
		Otevře vytvoření emailu pro odeslání zadaného rozsahu changesetů.
	:guilabel:`Svazek odsud k vybranému`
		Vytvoří soubor se svazkem zadaného rozsahu changesetů.
	:guilabel:`Exportovat oprávky odsud k vybranému`
		Vytvoří oprávkový soubor pro každý chanteset zadaného rozsahu.
	:guilabel:`Sloučit s ...`
		Sloučí označenou revizi s další vybranou revizí. *If neither revision is currently checked out, the merge dialog will be forced to update to the first selected revision before starting the merge. This will fail if the working directory is not clean.*
	:guilabel:`Transplant revision range to local`
		Přemístí vybraný rozsah changesetů k aktuálnímu pracovnímu rodičovskému adresáři. *Volba je viditelná jen při zpřístupněné extenzi 'transplant'*.
	:guilabel:`Rebase on top of selected`
		Přeskupí (rebase) vybraný changeset a předky nad původně vybranou revizi. *Volba je viditelná jen při zpřístupněné extenzi 'transplant'*.
	:guilabel:`Importovat výběr odsud k vybrané do MQ`
		Importovat vybraný rozsah revizí do aktuální fronty oprávek. *Volba je viditelná jen při zpřístupněné extenzi 'MQ'*.
	:guilabel:`Vybrat společného předka`
		Ukáže společného předka dvou vybraných revizí.

.. [#rcm1] Příkaz uloží odtržené revize ve svazku do souboru, který může být později použit. Viz `také <http://mercurial.selenic.com/wiki/EditingHistory>`_.

Kontextové nabídky u souborů
----------------------------

Pravý klik na souboru v seznamu vlevo dole otevře kontextovou nabídku dalších voleb:

	:guilabel:`Vizuální Diff`
		Pro zadaný soubor otevře nastavený nástroj "VDiff"
	:guilabel:`VDiff k aktuální`
		Zobrazit rozdíly mezi vybranou revizí a aktuální revizí
	:guilabel:`Otevřít v revizi`
		Otevřít revizi označeného souboru v textovém editoru [#flcm1]_
	:guilabel:`Uložit v revizi`
		Zapsat revizi vybraného souboru do nového souboru.
	:guilabel:`Historie souboru`
		Ukázat revize, které upravovaly tento soubor [#flcm2]_
	:guilabel:`Anotace souboru`
		Otevřít soubor v proceduře "datamine"
	:guilabel:`Vrátit obsah souboru`
		Vrátit stav vybraného souboru do stavu označené revize [#flcm3]_
 
.. [#flcm1] :menuselection:`Globální nastavení -> TortoiseHg -> Vizuální editor`
.. [#flcm2] Neukazuje revize smazaných souborů, neboť tato změna je pouze manifestační, která nemění historii souboru.
.. [#flcm3] Nový obsah se projeví jako lokální změna a musí být komitován.


Prohlížení changesetů
---------------------

Okno Průzkumníka repozitáře je rozděleno do tří polí. V horním poli je tak zvaný 
changelog se seznamem jednotlivých revizí (verzí, changesetů). Skladbu sloupců s informacemi o jednotlivých verzích lze nastavit.

V levém dolním poli se zobrazují jednotlivé soubory, vybrané revizi.

V pravém dolním poli se zobrazují případné diffy pro označený soubor nebo pro všechny soubory revize, je-li vybrána volba Všechny soubory.

Prohlížeč vypouští zobrazení nadrozměrných diffů - viz 
:menuselection:`Globální nastavení -> TortoiseHg -> Max velikost diffu`. Limit velikosti lze dočasně vypnout přepnutím volby :menuselection:`Zobrazení -> Ignorovat max velikost diffu`.

Diffový panel je někdy rozdělen na záložky a umožňuje podrobný výběr souborů a porcí pro zápis do oprávkového souboru. 
Prohlížeč changesetů také podporuje klávesový akcelerátor Ctrl-C pro kopírování označených porcí do schránky.

Bohužel, TortoiseHg dosud nemá dialog pro importování oprávek do repozitáře, takže se to musí dělat přes příkazový řádek příkazem **hg import**.

 

Analýza průvodních zpráv
------------------------

Nově v THg 1.0 bylo zavedeno, že prohlížeč repozitáře nalezne a podtrhne hash changesetu, HTTP, URL a kódy chybových zpráv uvnitř průvodní zprávy changesetu. Tyto podtržené fráze jsou použitelná pojítka.

Každý hranicemi slov delimitovaný řetězec o 12 nebo 40 znaky o rozsahu [0-9a-f] je považován za odkaz k changesetu. Klepnutí na tento odkaz přenese zaměření k inkriminovanému changesetu, pokud je to možné.

Adresy HTTP a URL se podobně přemění v klepnutelné odkazy na nastavený webový prohlížeč.


Issue tracker links are enabled when configured in the tortoisehg section of your configuration files. Since only a single issue tracker can be configured at a time, it is typically configured in the repository’s .hg/hgrc file. There are two keys: issue.regex and issue.link. The first defines the regex to match when picking up issue numbers, while the second defines the command to run when an issue number is recognized.

You may include groups in issue.regex, and corresponding {n} tokens in issue.link (where n is a non-negative integer). {0} refers to the entire string matched by issue.regex, while {1} refers to the first group and so on. If no {n} tokens are found in issue.link, the entire matched string is appended instead.

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://mercurial.selenic.com/bts/

Bisect
------

TortoiseHg 1.0 zavedl podporu pro metodu bisect (binární výběr), která se používá pro nalezení changesetů s prvním výskytem nějaké chyby. Při jejím použití označíme jako špatný ten nejstarší changeset, o němž víme, že obsahuje chybu a jako dobry ten ještě starší, o němž víme, že chybu neobsahuje. Procedura bisect vybere changeset, jehož správnost uživatel ověří a označí jako špatný nebo dobrý. Procedura vybere dalšího kandidáta pro ověření správnosti nebo přímo oznámí nalezení hledané revize s prvním výskytem chyby.

Pro zrychlení celého průběhu můžeme označení dobrý či špatný zadat bez prověření.

Automatizovaný binární výběr provádíme z příkazového řádku Mercurialu. Pro použití metody máme připravený testovací skript, který si metoda u podezřelých changesetů sama spouští. Viz nápověda pro příkaz :command:`hg bisect`.


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

:kbd:`Ctrl-P`
	Přesunout zvýraznění řádku na aktuální revizi pracovního adresáře
:kbd:`Ctrl-D`
	Aktivovat 'VDiff' pro vybraný changeset nebo soubor
:kbd:`Ctrl-R`
	Aktualizovat obsah repozitáře
:kbd:`Ctrl-G`
	Přejít k určíté revizi


Nastavitelné parametry
----------------------

Průzkumník repozitáře má několik nastavitelných parametrů, které mohou být určeny v dialogu Nastavení ... na záložce Changelog:

	:guilabel:`Zabarvení podle autora`
		Zadáno-li true, mění se barvy changesetů podle autora
	:guilabel:`Dlouhý souhrn`
		Zadáno-li true, spojují se řádky zpráv komitů až do délky 80 znaků
	:guilabel:`Velikost dávky logu`
		Počet revizí načtených a zobrazených v prohlížeči v jedné dávce
	:guilabel:`Kopírovat hash`
		Zadáno-li true, lze kopírovat ID (hash) changesetů do schránky
	:guilabel:`Mrtvé větve`
		Seznam čárkami oddělených jmen, které mají být při sestavování seznamu jmen větví pro repozitář ignorovány
	:guilabel:`Zabarvení větví`
		Seznam čárkami oddělených jmen větví a barev ve formě 'branch:#XXXXXX'. Mezery a dvojtečky ve jménu větve musí být předznamenány zpětnými lomítky (\\). Podobně mohou být předznamenány i některé další znaky, např \\u0040 bude dekódováno na znak @ a \\n na 'linefeed'.
	:guilabel:`Skrýt tagy`
		Seznam čárkami oddělených tagů, které se nebudou zobrazovat. Užitečný příklad: zadejte "qbase, qparent, qtip" pro skrytí standardních tagů, vkládaných extenzí MQ.
	:guilabel:`Použít expandér`
		Zadáno-li true, zobrazují se detaily changesetu pod expandérem.

Přidělení barvy jednotlivým uživatelů lze nastavit přidáním řádků do konfiguračního souboru Mercurial.ini: ::

	[tortoisehg]
	authorcolor.USERNAME = color

Prohlížeč changesetů také respektuje následující volby na záložce TortoiseHg v Nastavení repozitáře:

	:guilabel:`Šířka záložky`
		Nastavení šířky záložek (v počtu míst)
	:guilabel:`Max velikost diffu`
		Maximální velikost diffovaného souboru
	:guilabel:`Diff panel dole`
		Zobrazit panel diff pod seznamem souborů


Otevření z příkazového řádku
----------------------------

::

	hgtk log [OPTIONS] [FILE]

	alias: history

	changelog viewer 

	options:

	 -l --limit  limit number of changes displayed

	globální možnosti viz "hgtk -v help log" 

.. vim: noet ts=4
