Mercurial
Vývojář | Matt Mackall |
---|---|
První vydání | 19. dubna 2005 |
Aktuální verze | 6.5.1 (7. srpna 2023) |
Operační systém | multiplatformní software |
Vyvíjeno v | Python, C a Rust |
Typ softwaru | verzování |
Licence | GPLv2 GNU GPL 2.0 nebo vyšší |
Web | www |
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.
Související software
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.
- Murky Archivováno 10. 3. 2012 na Wayback Machine.
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).
- Nástroje pro slévání (merge): (h)gct (Qt) a Meld.
- Konverzní rozšíření umožňují import z repozitářů CVS, Darcs, Git, GNU Arch, Monotone, Perforce, Bazaar a SVN.
- Microsoft Visual Studio podporuje Mercurial v pluginech VisualHG Archivováno 11. 3. 2012 na Wayback Machine. a HgSccPackage Archivováno 3. 7. 2020 na Wayback Machine..
- NetBeans podporují Mercurial od verze 6.
- Plugin MercurialEclipse pro Eclipse.
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.
- ↑ MACKALL, Matt. Towards a Better SCM: Revlog and Mercurial [online]. mercurial-scm.org [cit. 2019-09-15]. Dostupné online. (anglicky)
- ↑ Mercurial v0.1 - a minimal scalable distributed SCM
—Mackall Matt Linux-Kernel Archive: Mercurial v0.1 - a minimal scalable distributed SCM
- ↑ Re: Mercurial 0.4b vs git patchbomb benchmark
—Mackall Matt, Linux-Kernel Archive: Re: Mercurial 0.4b vs git patchbomb benchmark
- ↑ Why did Matt choose the name Mercurial?
—Mackall Matt, Skupiny Google
Externí odkazy
- Obrázky, zvuky či videa k tématu Mercurial na Wikimedia Commons
- Mercurial SCM
- Mercurial: The Definitive Guide, Bryan O'Sullivan, 2009, O'Reilly
- Mercurial: an alternative to Git na LWN.net
- Tutoriál s příklady použití od základních až ke složitějším
Média použitá na této stránce
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.
Autor: Axaluss, Licence: CC BY-SA 3.0
Mercurial commands and their relations.
Autor:
- Revision_controlled_project_visualization.svg: *Subversion_project_visualization.svg: Traced by User:Stannered, original by en:User:Sami Kerola
- derivative work: Moxfyre (talk)
- derivative work: Echion2 (talk)
Visualization of the "history tree" of a revision controlled project, showing branching, merging, tagging, etc.