Mercurial

Mercurial
Logo
VývojářMatt Mackall
První vydání19. dubna 2005
Aktuální verze6.5.1 (7. srpna 2023)
Operační systémmultiplatformní software
Vyvíjeno vPython, C a Rust
Typ softwaruverzování
LicenceGPLv2
GNU GPL 2.0 nebo vyšší
Webwww.mercurial-scm.org
Některá data mohou pocházet z datové položky.

Mercurial je multiplatformní, verzovací nástroj pro vývoj softwaru. Převážná část je napsána v jazyce Python, obsahuje ale i binární část diff napsanou v jazyce C. Může být používán s operačním systémem Windows, stejně jako se systémy typu Unix (jako Linux, FreeBSD či macOS). Mercurial je určen primárně pro použití v příkazovém řádku, dostupné jsou ale i grafická uživatelská rozhraní. Veškeré operace nástroje Mercurial jsou volány v podobě parametrů hlavního příkazu hg. (pozn. Zkratka hg představuje chemickou značku prvku Rtuť.)

Hlavní cíle Mercurialu:

  • vysoká výkonnost a škálovatelnost
  • decentralizovaný, plně distribuovaný teamový vývoj
  • odolná správa textových i binárních souborů
  • možnost pokročilého větvení a slévání (merge)

Všechny tyto body by měl Mercurial dosáhnout při zachování celkové jednoduchosti.[1] Obsahuje rovněž webové rozhraní. Mercurial pamatoval na uživatele SVN pro jejich jednodušší přechod. Autor a hlavní vývojář Mercurial je Matt Mackall. Nástroj je vydán jako free software s licencí GNU GPL v2.

Technické informace

Mercurial používá k označení revizí SHA-1 hash. Pro přístup k repozitářům po síti používá Mercurial protokol založený na HTTP, který snižuje opakovaní identických dotazů, vytváření nových spojení a množství přenesených dat. Mercurial může používat i ssh, kde je protokol rovněž podobný HTTP. Automaticky používá Mercurial 3cestný merge před voláním externích spojovacích nástrojů.

Historie

Autor Mackall poprvé představil Mercurial 19. dubna 2005.[2] Jeho podnětem byla zpráva ze stejného měsíce, ve které Bitmover oznamuje ukončení šíření bezplatné verze BitKeeper, tj. nástroje pro kontrolu verzí používaného v projektu kernelu Linux. Mackall se rozhodnul napsat distribuovaný verzovací nástroj, který BitKeeper v tomto projektu nahradí. Projekt vývoje Mercurial byl zahájen několik dnů po zahájení projektu Git, iniciovaného Linusem Torvaldsem se stejným cílem.[3] Projekt kernel Linux se rozhodl používat Git raději než Mercurial, nicméně ten je v současné době používán ve spoustě jiných projektů (viz níže). V jednom svém příspěvku Matt Mackall vysvětluje, jak bylo jméno "Mercurial" vybráno:[4]

"Krátce před vystavením první verze jsem četl článek o probíhajícím debaklu Bitkeeperu, kde byl Larry McVoy popsán jako "mercurial" (ve smyslu "nestálý"). Protože to nabízelo více významů, jednoduchou zkratku a také protože to zapadalo do schématu mých dřívějších použitých názvů (podívejte se na moji emailovou adresu), klaplo to okamžitě. Mercurial byl tím pádem pojmenován na počest Larryho. Nevím, zda to samé platí pro název Git."

Použití

Na obrázku jsou znázorněny nejvýznamnější operace v Mercurialu a jejich vztah k celkovému konceptu.

Obr.1: Nejvýznamnější operace v Mercurialu a jejich vztahy

Související software

hgk

GUI rozhraní pro Mercurial:

  • Hgk

Představuje rozšíření samotného Mercurialu a je součástí oficiální verze. Zobrazuje orientovaný acyklický graf změn v repozitáři Mercurialu. Hgk může být spuštěn příkazem hg view, pokud je toto rozšíření povoleno. Hgk byl původně založen na obdobném nástroji pro Git nazvaném gitk. Nástupce Hgk se jmenuje hgview Archivováno 5. 4. 2012 na Wayback Machine., je napsán pouze v Pythonu a nabízí rozhraní GTK+ i Qt.

TortoiseHg je výchozí grafickou nadstavbou Mercurialu pro Microsoft_Windows, je ale funkční i v GNOME Nautilus.

Pro systém macOS, Objective-C 2.0, spustitelný v macOS verze 10.5 a vyšších.

Další GUI pro macOS "jehož cílem není kompletně nahradit použití Mercurialu v příkazovém řádku, ale jen usnadnit nejpoužívanější operace Mercurial". Pro macOS 10.4 a vyšší.

MacHg je bezplatné, rychlé a multivláknové rozhraní pro macOS, verze 10.6 nebo vyšší.

Další freeware GUI pro macOS, podporuje Mercurial i Git.

Freeware klient typu TUI pro Linux a Windows (s použitím cygwin).

Zdrojové kódy

Projekty používající Mercurial

Reference

V tomto článku byl použit překlad textu z článku Mercurial na anglické Wikipedii.

  1. MACKALL, Matt. Towards a Better SCM: Revlog and Mercurial [online]. mercurial-scm.org [cit. 2019-09-15]. Dostupné online. (anglicky) 
  2. Mercurial v0.1 - a minimal scalable distributed SCM

    —Mackall Matt Linux-Kernel Archive: Mercurial v0.1 - a minimal scalable distributed SCM

  3. Re: Mercurial 0.4b vs git patchbomb benchmark

    —Mackall Matt, Linux-Kernel Archive: Re: Mercurial 0.4b vs git patchbomb benchmark

  4. Why did Matt choose the name Mercurial?

    —Mackall Matt, Skupiny Google

Externí odkazy

Média použitá na této stránce

Revision controlled project visualization-2010-24-02.svg
Autor: , Licence: CC BY-SA 3.0
Visualization of the "history tree" of a revision controlled project, showing branching, merging, tagging, etc.
Mercurial no border logo.svg
Autor: ™ Cali Mastny and Matt Mackall, Licence: GPL
Logo of Mercurial
Hgk.png
This is a new version (PNG instead of JPEG) of the original screenshot Hgk.jpg, created by me with ImageMagick ("import") and released to the public domain. This Hgk instance shows part of the Mercurial sources' changesets from the official repository. I tried to select the same part of the changeset tree as in the original screenshot, as it nicely shows how Hgk is able to visualize the branching (and merging) tree structure.
Mercurial commandd and their relations.png
Autor: Axaluss, Licence: CC BY-SA 3.0
Mercurial commands and their relations.