Mercurial
開発元Matt Mackall
初版2005年4月19日(15年前) (2005-04-19)
最新版5.4.1 - 2020年6月5日(4か月前) (2020-06-05)[1][±]
Mercurial (マーキュリアル) は、ソフトウェア開発者向けの分散型バージョン管理システムである。Microsoft Windows、FreeBSD、MacOS、Linux等の Unix 系システムでサポートされている。GPL v2+ [3] の条件の下でフリーソフトウェアとしてリリースされている。
Mercurial はシンプルな概念の下、次のものを主要な設計目標としている。
分散型 VCS
完全分散型の共同開発
高いパフォーマンス
スケーラビリティ
プレーンテキストファイルとバイナリファイル両方に対する堅牢な処理
高度な分岐
マージ機能
Mercurial は主としてコマンドライン駆動のプログラムである。Mercurial のすべての操作は、そのドライバープログラム hg への引数として呼び出される。(hg というプログラム名は、英: mercury が水銀を意味しその元素記号が Hg であることに由来する。)
その一方で、Mercurial には、統合された Web インターフェイスが含まれており、グラフィカルユーザインタフェースの拡張機能が利用できる。 TortoiseHg およびいくつかの IDE では、Mercurial によるバージョン管理のサポートを提供する。また他のバージョン管理システム、特に Apache Subversion のユーザの移行を容易にする手段も講じている。
Mercurial は主に Python で実装されている。バイナリ Diff 実装は C 言語で記述されていた。現在はRustを用いた chg (差分取得。C言語 からの置換え)、hgcli (クライアント用コマンドツール)、hg-core (コアモジュール) の実装が進められている。[4][5]
Matt Mackall は、Mercurial の創始者であり、2016年後半までリード開発者を務めた。目次 2005年4月上旬、Linuxカーネルの開発に利用されていたBitKeeperのフリー版の配布停止が発表された(詳細についてはBitKeeper#価格変更参照)。Linuxカーネル開発者の一人でもあったMatt Mackall はBitKeeperに代わる分散型バージョン管理システムの開発に乗り出し、4月19日に0.1をリリースした。[6] 既にLinuxカーネルの原著作者であるLinus Torvaldsも同様の目的でGitの開発を開始していたが、Mackall はLinux kernel Mailing List上でMercurial の優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している等)を訴え、Torvalds と論争を繰り広げたこともあった。LinuxカーネルプロジェクトはMercurial ではなくGitを使用することを決定したが、現在、Mercurial は他の多くのプロジェクトで使用されている。「Git vs. Mercurial」はハッカー文化の聖戦の1つになった。 Mercurial メーリングリストの回答で、Mackall は「Mercurial」という名前がどのように選ばれたか説明した。 最初のリリースの少し前に、Larry McVoy を(「気まぐれ」の意味で)水銀性であると説明しています。進行中のBitKeeperの失敗に関する記事を読みました。複数の意味、便利な略語、および既存の命名スキーム(私の電子メールアドレスを参照)との適合性を考えると、すぐにクリックしました。したがって、Mercurial はLarry の名誉にちなんで名付けられました。同じことがGitにも当てはまるかどうかはわかりません[7][8]。 設計目標は、 である。またMercurialは完全なWebインターフェースを含んでいる。原著作者はMatt Mackall で、現在も主要開発者である。 Mercurial はSHA-1ハッシュを使用してリビジョンを識別する。ネットワークを介したリポジトリへのアクセスでは、Mercurial はHypertext Transfer Protocolベースのプロトコルを使用して、往復要求、新しい接続、および転送されるデータを削減しようとします。 Mercurial は、プロトコルがHypertext Transfer Protocolベースのプロトコルに非常に似ているSSHでも機能する。
1 歴史
2 設計
3 主な機能
4 採用事例
5 Mercurial サーバとリポジトリ管理
5.1 ソースコードホスティング
5.2 Mercurial を使用したオープンソースプロジェクト
6 脚注
7 外部リンク
歴史
設計
高い性能とスケーラビリティ
サーバが不要な、完全に分散した共同開発環境
テキストファイルとバイナリファイルの両方を効率よく扱うこと
概念上はシンプルなままで、高度なブランチ機能とマージ機能を持つこと