Mercurialは、ソフトウェア開発者向けの分散型バージョン管理ツールです。Microsoft Windows、Linux、およびFreeBSDやmacOSなどのUnix系システムでサポートされています。
Mercurial の主な設計目標には、高いパフォーマンスとスケーラビリティ、分散化、完全分散型の共同開発、プレーンテキストファイルとバイナリファイルの両方の堅牢な処理、高度なブランチングとマージ機能があり、概念的にはシンプルさを保っています。[ 5 ]統合された Web インターフェースが含まれています。Mercurial は、特にSubversionなどの他のバージョン管理システムのユーザーの移行を容易にするための措置も講じています。Mercurial は主にコマンドライン駆動のプログラムですが、TortoiseHgなどのグラフィカル ユーザー インターフェイス拡張機能が利用可能であり、いくつかのIDE がMercurial によるバージョン管理をサポートしています。Mercurial のすべての操作は、ドライバ プログラム (元素の水銀の化学記号Hg を参照)への引数として呼び出されます。hg
Olivia Mackall [ a ]は Mercurial を考案し、2016 年後半までそのリード開発者を務めました。Mercurial はGPL-2.0 以降のライセンスの下でフリーソフトウェアとしてリリースされています。[ 7 ]主にPython プログラミング言語を使用して実装されていますが、 Cで書かれたバイナリ差分実装も含まれています。
マッコールは2005年4月19日にMercurialを初めて発表した。[ 2 ]そのきっかけとなったのは、 Bitmoverがその月の初めにSourcePullerの開発のためBitKeeperの無料版の提供を終了すると発表したことだった。
BitKeeperはLinuxカーネルプロジェクトのバージョン管理要件に使用されていました。MackallはLinuxカーネルで使用するための代替として分散バージョン管理システムを作成することを決定しました。このプロジェクトは、現在よく知られているGitプロジェクトがLinus Torvaldsによって同様の目的で開始されてから数日後に始まりました。[ 8 ]
LinuxカーネルプロジェクトはMercurialではなくGitを使用することに決定しましたが、Mercurialは現在、他の多くのプロジェクトで使用されています(下記参照)。
Mercurialのメーリングリストへの回答の中で、オリビア・マッコールは「Mercurial」という名前がどのように選ばれたかを説明した。
最初のリリース直前に、進行中の Bitkeeper の失敗に関する記事を読み、ラリー・マクヴォイが「気まぐれな」という意味で mecurial と表現されていました。複数の意味があり、便利な略語であり、私の既存の命名規則 (私のメールアドレスを参照) によく合致していたため、すぐにピンときました。そのため、Mercurial はラリーに敬意を表して名付けられました。Git についても同じことが言えるかどうかはわかりません。[ 9 ] [ 10 ]
OpenJDKのような著名なプロジェクトは過去にMercurialを使用していたが、Java 16以降はOpenJDKでは使用しなくなった。[ 11 ]
Mercurialは、リビジョンを識別するためにSHA-1ハッシュを使用します。ネットワーク経由でリポジトリにアクセスする場合、MercurialはHTTPベースのプロトコルを使用し、ラウンドトリップリクエスト、新規接続、および転送データを削減します。MercurialはSSH経由でも動作し、そのプロトコルはHTTPベースのプロトコルと非常によく似ています。デフォルトでは、外部マージツールを呼び出す前に3ウェイマージを実行します。
図1は、Mercurialにおける最も重要な操作の一部と、それらがMercurialの概念とどのように関連しているかを示しています。

MercurialはLinuxカーネルソースの管理には選ばれませんでしたが、いくつかの組織に採用されました。FacebookはRustプログラミング言語を使用して、大規模なマルチプロジェクトリポジトリをサポートするために特別に設計されたMercurialサーバーであるMononoke [ 12 ] [ 13 ]を作成しています。
2013年、FacebookはMercurialを採用し、大規模で統一されたコードリポジトリを処理するためにMercurialの拡張作業を開始しました。[ 14 ]
Google も、クラウドベースのモノレポバックエンド「Piper」のフロントエンドとして Mercurial クライアントを使用しています。[ 15 ]
Bitbucketは、ウェブベースのバージョン管理サービスでMercurialのサポートを2020年6月に終了すると発表した(その後2020年7月に延長)。[ 16 ]その理由として、「新規プロジェクトでMercurialを使用しているのは1%未満であり、開発者調査では開発者の90%がGitを使用していることが示された」と説明した。[ 17 ]
Xenは長年Mercurialを使用していたが、2013年にGitに移行した。[ 18 ]
Mozillaは長年Mercurialを使用していたが、2023年にMercurialのサポートを終了し、Gitへの移行を開始した。[ 19 ]
以下のウェブサイトでは、Mercurialリポジトリ用の無料ソースコードホスティングサービスを提供しています。
Mercurialのウェブサイトには、他の鍛造業者についても記載されています。
Mercurial 分散 RCS を使用するプロジェクトの例: [ 25 ]
{{cite mailing list}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)