****************************
Použití s jinými systémy VCS
****************************

.. module:: nonhg
    :synopsis: Describe using TortoiseHg as a front-end to other VCS


Tato kapitola popisuje tři nejoblíbenější extenze Mercurialu pro spolupráci s *cizími* systémy VCS. Viz také `Konverze repozitáře <https://www.mercurial-scm.org/wiki/RepositoryConversion>`_.

.. _perfarce-perforce:

Perfarce (Perforce)
===================

* `Perfarce <http://www.kingswood-consulting.co.uk/hg/perfarce/>`_ home page.
* `Mercurial for Perforce users <https://www.mercurial-scm.org/wiki/PerforceConcepts>`_

Tato extenze upravuje obsluhu vzdáleného repozitáře tak, že cesta repozitáře, která připomíná::

	p4://p4server[:port]/clientname

způsobí operace na jmenované klientské specifikaci p4 na serveru p4. Klientská specifikace musí již na serveru existovat před použitím této extenze. Provádění změn u klienstské specifikace Views působí problémy při synchronizaci repozitářů a měli bychom se jim vyhnout.

Extenze přepisuje pět vestavěných příkazů Mercurialu.

outgoing (odchozí)::

	Začíná-li název destinace repozitáře p4://, potom jsou vybrány soubory ovlivněné revizemi lokálního repozitáře, nikoliv repozitáře v lokaci p4.

push (poslat)::

	Začíná-li název destinace repozitáře p4://, potom jsou exportovány změny z lokálního repozitáře do lokace p4. Není-li určena žádná revize, potom jsou odeslány všechny změny od posledního výpisu změn p4. V obou případech jsou všechny revize, které mají být odeslány, shrnuty v jediném výpisu změn p4.
    Volitelně je výsledný changelist předán serveru p4 na základě opce --submit pro push nebo na základě nastavení **perfarce.submit** na True. Je-li **perfarce.keep** nastaveno na False potom se po úspěšném předání souborů smaže pracovní prostor p4.

pull (stáhnout)::

	Začíná-li název zdrojového repozitáře p4://, potom jsou změny importovány z depotu p4, přičemž se automaticky slučují changelisty podané příkazem hg push. Je-li **perfarce.keep** nastaveno na False, potom se po úspěšném importu souborů smaže pracovní prostor p4; v opačném případě je pracovní prostor p4 novými soubory aktualizován.

incoming (příchozí)::

	Začíná-li název zdrojového repozitáře p4://, potom jsou oznámeny změny v depotu p4, které dosud nejsou v lokálním repozitáři.

clone::

	Začíná-li název zdrojového repozitáře p4://, potom se vytvoří cílový repozitář a přetáhnou se do něho všechny změny z depotu p4.

Nastavení konfigurační opce *perfarce.tags* určí, zda se perfarce pokusí importovat popisky (labels) Perforce jako tagy Mercurialu.


**Integrace TortoiseHg**

Je-li umožněna extenze perfarce, přidá se volba :guilabel:`start revision` do nástroje *klonovat* a tlačítko :guilabel:`P4` do synchronizační lišty.

Tlačítko nástrojové lišty provádí operace "p4pending". Vyhledá nevyřízené (pending) seznamy změn (changelists) Perforce, které byly poslány (pushed) do vašeho klienta Perforce ale nebyly postoupeny (submitted) nebo staženy (pulled) zpět. Otevře se dialogové okno se seznamem nevyřízených změn, které můžeme buď postoupit (submit) nebo vrátit zpět (revert). Když se proceduře Perforce úkon submit nepodaří, protože vaše soubory jsou zastaralé, musíte zrušit (revert) seznam změn (changelist), provést pull z Perforce, sloučit a provést push znovu.


**Instalace**

Perfarce se dodává společně s instalátory TortoiseHg 1.0 pro Windows takže jej snadno zavedeme přidáním záznamu do souboru Mercurial.ini nebo do konfiguračního souboru hgrc repozitáře::

	[extensions]
	perfarce=

.. note::
	Je známo, že extenze perfarce nepracuje spolu s extenzí hgsubversion, takže pokud zamýšlíte používat obě, měly by být povoleny lokálně pro ty repozitáře, které je potřebují.


hgsubversion (SVN)
==================

* `hgsubversion <https://bitbucket.org/durin42/hgsubversion/wiki/Home>`_ home page
* `hgsubversion Extension <https://www.mercurial-scm.org/wiki/HgSubversion>`_ wiki page
* `Working with Subversion Repositories <https://www.mercurial-scm.org/wiki/WorkingWithSubversion>`_

hgsubversion, jak název napovídá, umožňuje použít Mercurial jako klientskou aplikaci pro server SVN. Lze jej také použít pro přímý převod repozitářů SVN do Mercurialu.

**Instalace**

Instalační program TotroiseHg pro Window až k vezi 3.3.3 obsahuje pojítka python-svn a hgsubversion. Uživatelé těchto verzí mohou extenzi hgsubversion povolit konfiguračním nástrojem nebo ručně v konfig souboru Mercurial.ini::

	[extensions]
	hgsubversion =

Funkčnost instalace si ověříme zadáním `hg help hgsubversion`

Počínaje verzí TortoiseHg 3.4 jsou knihovny subversion a příslušná poutka pro SWIG Pythonu 2.7 z instalace odebrány. Důvodem byly primárně bezpečnostní problémy v knihovnách DLL pro subversion, nad nimiž nemají správci TortoiseHg žádnou kontrolu. Důvodem byla rovněž snaha vyhnout se potřebě přikládat ke každému vydání TortoiseHg další kompletní systém správy revizí - SVN.

Pojítka (bindings) pro SWIG Pythonu jsou nyní k disposici jako samostatný download. Pokyny pro stažení a použití těchto poutek jsou dostupné na `Subversion bindings for Python 2.7`_.

.. _Subversion bindings for Python 2.7:
   https://bitbucket.org/tortoisehg/thg/wiki/libsvn

Viz hgsubversion wiki. Doporučujeme verzi hgsvn alespoň 1.2.1 s Mercurialem 1.8.

.. warning::
	Při klonování serveru pro Subversion se doporučuje klonovat pouze několik prvních revizí a ostatní stáhnout akcí pull. Chování příkazu clone je nastaveno tak, že se při neúspěšném provedeni neúplný klon smaže, zatímco realizace příkazu pull je mnohem tolerantnější.

*Integrace TortoiseHg*

Importované changesety Subversion zobrazí původní číslo changesetu na kartě Podrobnosti revizí ve Verpánku.

hg-git (git)
============

* `hg-git <https://hg-git.github.io/>`_ home page
* `hg-git Extension <https://www.mercurial-scm.org/wiki/HgGit>`_ wiki page
* `Mercurial for Git users <https://www.mercurial-scm.org/wiki/GitConcepts>`_

hg-git, jak název naznačuje, nám umožní použít Mercurial jako klientskou aplikaci pro server git. Lze jej použít také pro přímý převod repozitáře Git do Mercurialu.

*Instalace*

Instalační programy TortoiseHg pro Windows obsahují pojítka (bindings) python-git (zvaná dulwich) a hg-git. Je možné je povolit nástrojem Settings nebo ručně::

	[extensions]
	hggit =

Úspěšnost nastavení lze ověřit příkazem :command:`hg help hggit`.

Podrobnosti viz dokumentace hggit.

Vězte, že příkazy 'incoming' a 'outgoing' nepracují vždy spolehlivě při komunikaci s gitovými repozitáři. Jste tedy odkázán na jednoduché příkazy 'pull' a 'push', což je společné Mercurialovým extenzím, které komunikují s externími nástroji správy verzí.


.. vim: noet ts=4
