Synchronizace
=============


.. module:: synchronize.dialog
	:synopsis: Dialog used to perform synchronization operations

Nástroj `TortoiseHg > Synchronizovat`

.. figure:: figures/synchronize.png
	:alt: Synchronize dialog


Synchronizační nástroj se používá pro přesouvání changesetů mezi repozitáři nebo pro odesílání změn přes e-mail.

:guilabel:`Incoming`
  Ukázat (příchozí) changesety, které mohou být staženy (pulled) z cílového repozitáře, neboli změny v cílovém repozitáři, které nejsou v lokálním repozitáři
:guilabel:`Pull`
  Stáhnout příchozí changesety z cílového repozitáře
:guilabel:`Outgoing`
  Ukázat (odchozí) changesety, které mohou být poslány (pushed) do cílového repozitáře, neboli změny v lokálním repozitáři, které nejsou v cílovém repozitáři
:guilabel:`Push`
  Poslat odchozí changesety do cílového repozitáře, neboli zařídit, aby se lokální *tip* stal *tipem* v cílovém repozitáři
:guilabel:`Email`
  Poslat odchozí changesety (do cílového repozitáře) jako e-mail
:guilabel:`Rozbalit`
  Rozbalit svazkový (bundle) soubor *.hg*
:guilabel:`Stop`
  Zastavit probíhající operaci
:guilabel:`Po akci pull:`
  Tlačítko obsahuje zatržítka pro výběr operací, které se mají provést po stažení (pull) změn ze vzdáleného repozitáře. Otevřete-li konfigurační nástroj, můžete vybrat implicitní chování pro váš uživatelský účet a potlačit tento výběr na úrovni repozitáře.

  :guilabel:`None`
     Po akci pull se neprovedou žádné operace. Můžete si prohlédnout stažené changesety v záznamovém panelu a můžete se pokusit o aktualizaci k novému tipu.

  :guilabel:`Update`
     Automaticky aktualizovat k tipu aktuální větve tehdy a jen tehdy, jestliže byly nové revize staženy do lokálního repozitáře. Může to spustit slučování, jestliže stažené změny kolidují s lokálními nekomitovanými změnami.

  :guilabel:`Fetch`
     Ekvivalentní k hg fetch. Viz dokumentaci k extenzi fetch. Tato  procedura je přístupná, pokud byla povolena uživatelem.

  :guilabel:`Konflikty při slučování`
     Konflikty při sloučování řešit pokud možno automaticky. Je-li tato volba zatržena, pokusí se Mercurial řešit triviální konflikty bez spoluúčasti uživatele. Není-li, jsou všechna slučování interaktivní.


:guilabel:`Možnosti`
  Tlačítko obsahuje zatržítka pro výběr méně používaných příkazových opcí.

  :guilabel:`Povolit push nové větve`
     Povolit vyslání (push) nové větve
  :guilabel:`Vynutit push nebo pull`
	 Potlačit varování o vícerých čelech (heads) nebo nespřízněných repozitářích
  :guilabel:`Zabočit do subrepozitářů`
	 Příkazy incoming (příchozí) nebo outgoing (odchozí) mohou zahrnout i subrepozitáře a poskytnout úplný přehled
  :guilabel:`Dočasně odpojit nastavené HTTP proxy`
	 Tato volba je sensitivní pouze tehdy, je-li pro daný repozitář nastaven proxy web; zatržením se tento web zapoví.
  :guilabel:`Emitovat výstup ladění`
	 ...
  :guilabel:`Pracovat s frontou oprávek (-mq)`
	 ...
  :guilabel:`Vzdálený příkaz`
     Textové pole pro zadání vzdáleného příkazu
  :guilabel:`Větev`
	 Textové pole pro zadání názvu větve

Je-li synchronizační nástroj otevřen ve Verpánku, má nástrojová lišta ještě zatržítko

:guilabel:`Cíl`.
  Zatržením se aktivuje roletkový seznam, ve kterém lze vybrat cílovou revizi, bookmark nebo větev. Tyto výběry se přidají ke každému synchronizačnímu příkazu. Je-li synchronizační nástroj otevřen mimo Verpánek, je toto zatržítko skryté.

Než bude zatržítko "Cíl" doplněno i do widgetu `TortoiseHg > Synchronizovat`, bude zřejmě vhodnější používat synchronizační nástroj z Verpánku.


Pod nástrojovou lištou je uvedena aktuálně vybraná adresa URL. Tuto adresu použijí všechny synchronizační nástroje.

Celkový účinek nástroje `Synchronizovat` je ten, že může být čten jako příkaz Mercuriálu z příkazového řádku. Tlačítky nástroje se vybere příkaz, v dialozích `Po akci pull` a `Možnosti` se zadají parametry, v roletkovém seznamu `Cíl` se určí revize či větve a textovém poli lze zkontrolovat adresu vzdáleného repozitáře.

Před textovým polem pro URL jsou dvě ikony pro nastavení bezpečného spojení a uložení aktuálního URL jako alias.



Přidání URL
-----------

Nejsnadněji přidáte nové URL do svého repozitáře jeho přetažením (drag @ drop) z jiné aplikace, uložíte  a zadáte alias.

V textových polích spodní části karty Synchronizovat lze vidět adresy, uložené v konfiguračním souboru aktuálního repozitáře (:guilabel:`Cesty v nastavení repozitáře`) a adresy, které jsou uložené v jiných příbuzných repozitářích, uvedených v Seznamu repozitářů (:guilabel:`Příbuzné cesty`).

.. note::
	"Příbuzný" znamená, že dva repozitáře mají alespoň jeden společný kořenový changeset. Klonované repozitáře jsou zcela zřejmě příbuzné. Operace push a pull vyžadují příbuznost repozitářů; tento požadavek lze potlačit opcí --force.

Seznamy adres URL mají kontextové menu s nabídkami Explore, Terminal, Copy Path, Edit a Remove.


Bezpečné připojení ke vzdálenému repozitáři
-------------------------------------------

Mercurial (a TortoiseHg) podporují dva bezpečnostní protokoly pro výměnu dat se vzdálenými servery, HTTPS  a SSH.

Bezpečné spojení HTTPS lze nastavit aktivací ikony :guilabel:`Bezpečné spojení HTTPS` v kartě Synchronizovat.

Bezpečné spojení HTTPS se skládá ze dvou asymetrických částí. První částí je ověření hostitele, což lze v nástroji Bezpečné spojení HTTPS zadat trojím způsobem:

* Ověřit pomocí certifikátů certifikační autority (CA)

* Ověřit pomocí uloženého fingerprintu hostitele

* Bez ověření hostitele avšak stále se zašifrováním (nejhorší)

Druhou částí bezpečného spojení je ověření uživatele zadáním jména, hesla, případně certifikačního klíče či řetězce (chain).

Prověření hostitele
+++++++++++++++++++

Před verzí 1.7 ignoroval Mercurial tuto část bezpečnosti HTTPS spojení. Ve verzi 1.7 již začal varovat, že certifikát serveru není ověřován.

Mercurial 1.7.5 zavedl schopnost ověřit certifikát serveru HTTPS porovnáním s uloženým fingerprintem. Synchronizační nástroj TortoiseHg 2.0 obsahuje dialog, umožňující zvolit mezi fingerprintem hostitele nebo použitím certifikátu CA.

Teoreticky je fingerprint hostitele bezpečnější než certifikáty CA, pokud zcela nevěříte všem autoritám, uvedeným v implicitním uložišti. Musíte si ovšem být jist, že váš uložený fingerprint je skutečně ten správný.

TortoiseHg 2.0 také umožňuje použití nezajištěného spojení s daným hostitelem. Přitom se nepoužije ověření certifikátu hostitele ale použije se zašifrovaný datový proud (stream) - což je vlastně chování Mercurialu před verzí 1.7. messages).

Prověření uživatele
+++++++++++++++++++

Pro prověření vlastní osoby vzhledem k serveru HTTPS je k disposici několik mechanizmů.

Nejjednodušším je oprávnění Mercurialu požádat uživatele o zadání uživatelského jména a hesla. To má tu nevýhodu, že separátní výzvy vyžadují vytvoření dvou separátních spojení.

Další možností je připojení uživatelského jména k URL, takže Mercurial žádá pouze o zadání hesla (passphrase). To zkracuje proces prověřování na polovinu ale je stále poněkud únavné. Nechcete-li být obtěžování se zadáváním fráze hesla, musí být někde uloženo. Máte tyto možnosti:

1) připojit passphrase k URL HTTPS v konfiguračním souboru každého repozitáře
2) uložit passphrase do konfiguračního souboru uživatele
3) použít extenzi mercurial_keyring k uložení passphrase v kryptografické formě.

Až donedávna podporoval TortoiseHg ve svém grafickém rozhranní pouze první možnost i když interně byly podporovány i druhá a třetí varianta.
V grafickém rozhranní TortoiseHg 2.0 jsou podporovány pouze dvě poslední varianty. Uživatelské jméno a heslo jsou při ukládání odtrženy od URL.

Při přechodu od první možnosti k některé další vyberte v synchronizačním nástroji HTTPS URL, otevřte bezpečnostní dialog a zadejte uživatelské jméno a passphrase pro hostitele (není-li žádný nakonfigurován) a uložte. Poté uložte samotné URL a povolte odtržení ověřovacích dat uživatele od URL.

.. note::
	Je-li  povolena extenze mercurial_keyring, bezpečnostní dialog vám nedovolí zadat passphrase ve formě prostého textu, neboť se předpokládá, že chcete uložit passphrase kryptograficky.

Druhá a třetí možnost používá  sekci [auth] konfiguračního souboru uživatele k nastavení jména uživatele a passphrase (nebo soubory s certifikačními klíči) k autentifikaci u  daného jména HTTPS hostitele. Sekce [auth] podporuje mnohem víc konfigurací, než je tato - viz stránky man.

Jakmile je povolena extenze mercurial_keyring (a všechny aplikace jsou restartovány), můžete odebrat HTTPS passphrases ze všech svých konfiguračních souborů. Mercurial požádá o passphrase jednou, potom jej kryptograficky uloží s použitím nejlepšího back-endu, který na vaší platformě nalezne.

Extenze mercurial_keyring vyžaduje aby byla sekce [auth] nastavena pro hostitele, ke kterému se připojujete aby mohla poskytnout jméno uživatele. Má-li vaše URL vkódované (encoded) jméno uživatele nebo passphrase, je sekce [auth] ignorována.

SSH
~~~

SSH je symetrický peer-to-peer bezpečný tunel. Klienti SSH a servery mají své vlastní systémy správy, takže Mercurial se na výzvách po hesle při použití SSH nepodílí. To je problematické  ve Windovs, pročež TortoisHg připojuje do svých instalačních programů klienta SSH TortoiseHgPlink. TortoisePlink je port klienta Plink SSH, který používá dialogové prompty pro prověření hostitelského klíče a hesla uživatele. TortoisePlink (vyvinutý v rámci projektu TortoiseSVN) může použít také ostatní nástroje SSH, které jsou součástí Plink toolchainu, včetně prostředku Pageant key.

Je známým problémem, že TortoisePlink v mnoha situacích nepoužívá kompresi, v důsledku čehož je až čtyřikrát pomalejší než openssh a jiní klienti. Pro Windows doporučuje TortoiseHg použití HTTPs.

See the :doc:`faq` for help if you have trouble connecting to ssh servers.

E-mail
------

.. figure:: figures//email.png
	:alt: Email dialog

Dialogové okno **Email** lze spustit ze dvou nástrojů TortoiseHg.

* Z Verpánku jako kontextové menu pro jednu nebo více vybraných revizi.

* Tlačítkem :guilabel:`Email out..` v synchronizačním panelu odešlete všechny odchozí změny do zadaného cílového repozitáře.

Parametry poštovního klienta lze přednastavit v otevřeném okně 'Email out' výběrem :guilabel:Settings`.

V dokumentaci pro Mercurial se seznámíte s rozdíly mezi plain patches, Hg patches, Git patches a svazky (bundles).


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

 ::

	thg sync

	aliases: synchronize

	Synchronize with other repositories

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

Skladba je jednoduchá, žádné opce nebo parametry nejsou zapotřebí, kromě opcí globálních.

.. vim: noet ts=4
