Mercurial (マーキュリアル) は、ソフトウェア開発者向けの分散型バージョン管理システムである。Microsoft Windows、FreeBSD、MacOS、Linux等の Unix 系システムでサポートされている。GPL v2+ . の条件の下で自由ソフトウェアとしてリリースされている。
Mercurial はシンプルな概念の下、次のものを主要な設計目標としている。
分散型 VCS 完全分散型の共同開発 高いパフォーマンス スケーラビリティ プレーンテキストファイルとバイナリファイル両方に対する堅牢な処理 高度な分岐 マージ機能
Mercurial は主としてコマンドライン駆動のプログラムである。Mercurial のすべての操作は、そのドライバープログラム hg への引数として呼び出される。(hg というプログラム名は、 が水銀を意味しその元素記号が であることに由来する。)
その一方で、Mercurial には、統合された Web インターフェイスが含まれており、グラフィカルユーザインタフェースの拡張機能が利用できる。 TortoiseHg およびいくつかの IDE では、Mercurial によるバージョン管理のサポートを提供する。また他のバージョン管理システム、特に Apache Subversion のユーザの移行を容易にする手段も講じている。
Mercurial は主に Python で実装されている。バイナリ Diff 実装は C 言語で記述されていた。現在はRustを用いた chg (差分取得。C言語 からの置換え)、hgcli (クライアント用コマンドツール)、hg-core (コアモジュール) の実装が進められている。
Olivia Mackall は、Mercurial の創始者であり、2016年後半までリード開発者を務めた。
歴史 2005年4月上旬、Linuxカーネルの開発に利用されていたBitKeeperのフリー版の配布停止が発表された(詳細についてはBitKeeper#価格変更参照)。Linuxカーネル開発者の一人でもあった Mackall はBitKeeperに代わる分散型バージョン管理システムの開発に乗り出し、4月19日に0.1をリリースした。 既にLinuxカーネルの原著作者であるリーナス・トーバルズも同様の目的でGitの開発を開始していたが、Mackall はLinuxカーネルメーリングリスト上で Mercurial の優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している等)を訴え、トーバルズと論争を繰り広げたこともあった。LinuxカーネルプロジェクトはMercurial ではなくGitを使用することを決定したが、現在、Mercurial は他の多くのプロジェクトで使用されている。「Git vs. Mercurial」はハッカー文化の聖戦の1つになった。
Mercurial メーリングリストの回答で、Mackall は「Mercurial」という名前がどのように選ばれたか説明した。
設計 設計目標は、
高い性能とスケーラビリティ サーバが不要な、完全に分散した共同開発環境 テキストファイルとバイナリファイルの両方を効率よく扱うこと 概念上はシンプルなままで、高度なブランチ機能とマージ機能を持つこと
である。またMercurialは完全なWebインターフェースを含んでいる。 原著作者はOlivia (Mattは旧名) Mackall で、2016年にMercurial開発から引退した。
Mercurial はSHA-1ハッシュを使用してリビジョンを識別する。ネットワークを介したリポジトリへのアクセスでは、Mercurial はHypertext Transfer Protocolベースのプロトコルを使用して、往復要求、新しい接続、および転送されるデータを削減しようとする。 Mercurial は、プロトコルがHypertext Transfer Protocolベースのプロトコルに非常に似ているSSHでも機能する。デフォルトでは、外部マージツールを呼び出す前にマージ (バージョン管理システム)を使用する。
主な機能 0.9.5版から、他のバージョン管理システムで管理されたソースコードを、取り込む機能がサポートされているhttps://www.selenic.com/mercurial/wiki/index.cgi/ConvertExtension。
採用事例 Mercurial はLinuxカーネルソースの管理に選択されていないが、Facebook、World Wide Web Consortium、Mozillaを含むいくつかの組織で採用されている。FacebookはRustを使用してMononokeを作成している。これは、大規模なマルチプロジェクトリポジトリをサポートするために特別に設計されたMercurial サーバである。
2013年、FacebookはMercurial を採用し、大規模な統合コードリポジトリを処理するためのスケーリングに取り組み始めた。
Bitbucketは、Webベースのバージョン管理サービスが2020年6月にMercurial のサポートを終了すると発表し、新しいプロジェクトの1%のみがそれを使用していると説明した。
Mozillaは長年Firefoxなどの開発にMercurialとGitを利用していたが、2023年にGitへ一本化することを発表した。
Mercurial サーバとリポジトリ管理
RhodeCode Inc. によるRhodeCode Kallithea(RhodeCodeのGPLv3フォーク) Fog Creek Software によるKiln Phacility によるPhabricator
ソースコードホスティング
以下のウェブサイトは、Mercurialリポジトリの無料のホスティングサーバを提供している。
アトラシアンによるBitbucket(2020年2月から非推奨、2020年6月1日から廃止されるMercurial リポジトリのサポート) SourceForge.net フリーソフトウェア財団によるSavannah Puszcza(Savannah姉妹サイト、ウクライナでホスト) OSDN Perforce Mozdev TuxFamily FusionForge その他.
Mercurial を使用したオープンソースプロジェクト Mercurial 分散RCSを使用するいくつかのプロジェクト.
Adium GNU Health GNU Multi-Precision Library GNU Octave IcedTea LEMON LiquidFeedback Nginx OpenJDK Orthanc Pidgin RhodeCode Roundup SDL Tryton WinDirStat wmii XEmacs Xine
関連項目 バージョン管理システムの一覧
脚注
出典
外部リンク
Official Mercurial Project Wiki Mercurial 日本語チュートリアル 分散バージョン管理Git/Mercurial/Bazaar徹底比較 Mercurialではじめる分散構成管理 Mercurial の利用 Mercurialでバージョン管理