Obecné vlastnosti
=================

.. module:: common.dialog
    :synopsis: Common features to all the dialog

Tyto vlastnosti jsou společné mnoha nástrojům TortoiseHg a jsou tedy dokumentovány pouze na tomto místě.

Zobrazení rozdílů
-----------------

.. figure:: figures/visual-diff.png
   :alt: Visual Diff Window

Okno pro zobrazení rozdílů pro changeset, který má dva rodiče (p1, p2)

V TortoiseHg 1.0 byla vizuální (externí) diffová infrastruktura) zcela přepracována. Nový systém používá popisy nástrojů v :file:`mergetools.rc` k detekci nejběžnějších diffových nástrojů ve vašem počítači (včetně KDiff3, který je dodáván s instalací TortoiseHg) a k výběru nejvhodnějšího z nich.

Pokud si uživatel vybral slučovací nástroj (:menuselection:`Setting > TortoiseHg > Nástroj pro sloučení`), je tento nástroj použit a výběrový proces je vynechán. Uživatel si ale stejně může vybrat separátní nástroj (:menuselection:`TortoiseHg > Nástroj Visual Diff`) pro zobrazení diffů.

Konfigurační soubor slučovacího nástroje obsahuje optimální příkazové řádky pro každý nástroj, takže další konfigurace uživatelem není potřebná. Stačí si vybrat žádaný nástroj nebo přijmout implicitní nastavení.

Systém vizuálních diffů použije každou existující konfiguraci extdiff, kterou najde. Protože ale extdiff ještě donedávna nepodporoval 'three way' diffové argumenty a stále ještě nepodporuje štítkové (label) argumenty, bude pro vás patrně nejlepší, když zakážete nebo smažete všechny konfigurace extdiff, které máte.

Vizuální diffový systém použije přímo vybraný diffový nástroj, pokud prováděná akce nepožaduje použití dialogového okna (TortoiseHg) pro vizuální diff. Jde o tyto situace:

1. Výběr porovnávaných souborů vyžaduje více nástrojů
2. Vybraný nástroj štěpí oddělené procesy na pozadí
3. Vybraný nástroj nepodporuje požadované diffy adresářů
4. Vybraný nástroj nepodporuje 'three way' porovnávání
5. Změny souborů zahrnují přejmenování nebo kopie

Je-li použito dialogové okno pro vizuální diff, jsou dočasné soubory smazány až po ukončení dialogu. Okno by tedy mělo zůstat otevřené, dokud nezavřete všechny své instance diffových nástrojů.
Je-li váš diffový nástroj spuštěn přímo, dočasné soubory se smažou při zavření nástroje.

Je-li váš diffový nástroj spuštěn přímo pro porovnání pracovní kopie, bude se srovnávat přímo s pracovním souborem, takže jej můžete editovat zevnitř diffového nástroje. Porovnáváte-li více souborů, pořídí si systém vizuálního diffu snímek souborů pracovní kopie a zaznamená jejich původní velikosti a časové údaje (timestamps). Při zavření diffového nástroje porovná systém velikosti a časy a překopíruje upravené soubory zpět do původních pracovních kopií. Tímto způsobem můžete vždy upravovat soubory vaší pracovní kopie ze svého nástroje pro vizuální diff i při porovnávání adresářů.

Je-li dialogové okno pro vizuální diff použito k porovnání souborů pracovní kopie, provádí se diff vždy přímo proti souborům pracovní kopie, neboť se vždy pracuje s jedním souborem v daném okamžiku.

Přidávání nástrojů
~~~~~~~~~~~~~~~~~~

Máte-li nainstalovaný diffový nástroj, který není podporován aplikací TortoiseHg, můžete pro něj vytvořit konfiguraci v souboru :file:`Merurial.ini`. Viz `dokumentace Hg <https://www.mercurial-scm.org/doc/hgrc.5.html#merge-tools>`_. Poté přidáte extra klíče, které pro vizuální diff TortoiseHg používá::

	diffargs:  argumenty pro dvojné komparace
	diff3args: argumenty pro trojné komparace
	dirdiff:   tento nástroj podporuje dvojné komparace
	dir3diff:  tento nástroj podporuje trojné kopmarace

Při sestavování argumentů pro příkazovový řádek můžeme použít následující proměnné::

	$parent1:  soubor nebo složka z revize prvního rodiče
	$parent2:  soubor nebo složka z revize druhého rodiče
	$child:    soubor nebo složka z porovnávané revize
	$parent:   synonym pro $parent1

	$plabel1:  symbolický název revize prvního rodiče
	$plabel2:  symbolický název revize druhého rodiče
	$clabel:   symbolický název pro porovnávané revize

$parent2 a $ancestor mají ovšem smysl pouze tehdy, jsou-li použity jako argumenty trojného diffu pro zobrazení sloučených changesetů. Nemůže-li váš diffový nástroj použít rozumným způsobem revizi předka, je bezpečnější vypustit jej z příkazového řádku pro diff3args.

.. note::
	Ve Windows může parametr `executable` použít proměnné prostředí s použitím syntaxe ${ProgramFiles}

Pokud tuto konfiguraci neprovedeme, implicitní hodnota **diffargs** je '$parent $child'. Implicitní hodnota **diffargs3** je "", což naznačuje, že vizuální diffový nástroj nemůže provádět trojné komparace.

Vytvoříte-li novou konfiguraci nástroje pro vizuální diff nebo vylepšíte stávající, pošlete prosím mail našemu vývojovému oddělení pro možné zahrnutí do příštího vydání programu.

Diffy slov
~~~~~~~~~~

Instalační program TortoiseHg pro Windows nyní obsahuje skripty aplikace TortoiseSVN pro porovnávání (a někdy sloučení) dokumentů v mnoha binárních formátech. Tyto jsou nastaveny v souboru :file:`mergepatterns.rc` jako ovladače pro obvyklé extenze souborů každého binárního formátu, takže není zapotřebí zásahu uživatele.

Pro podporu výběru nástrojů, vycházejícího z přípony souboru, přidal TortoiseHg podporu pro sekci **[diff-patterns]**, která je ekvivalentní k sekci Mercurialu `merge-patterns <https://www.mercurial-scm.org/doc/hgrc.5.html#merge-patterns>`_.

.. vim: noet ts=4
