Mercurial

From Wikipedia, the free encyclopedia

Mercurial (マーキュリアル) は、ソフトウェア開発者向けの分散型バージョン管理システムである。Microsoft WindowsFreeBSDMacOSLinux等の Unix 系システムでサポートされている。GPL v2+ [3] の条件の下で自由ソフトウェアとしてリリースされている。

開発元 Olivia Mackall[注釈 1]
初版 2005年4月19日 (20年前) (2005-04-19)
最新版 6.9.2 - 2025年2月19日 (12か月前) (2025-02-19)[1] [±]
概要 開発元, 初版 ...
Mercurial
 ウィキデータを編集
Mercurial の公式ロゴマーク。
開発元 Olivia Mackall[注釈 1]
初版 2005年4月19日 (20年前) (2005-04-19)
最新版 6.9.2 - 2025年2月19日 (12か月前) (2025-02-19)[1] [±]
リポジトリ ウィキデータを編集
プログラミング
言語
Python, Rust, C
対応OS クロスプラットフォーム
種別 開発支援、リポジトリ、バージョン管理ソフトウェア、無料のオープンソースソフトウェア
ライセンス GPL v2+ [2]
公式サイト www.mercurial-scm.org ウィキデータを編集
テンプレートを表示
閉じる

Mercurial はシンプルな概念の下、次のものを主要な設計目標としている。

  1. 分散型 VCS
  2. 完全分散型の共同開発
  3. 高いパフォーマンス
  4. スケーラビリティ
  5. プレーンテキストファイルとバイナリファイル両方に対する堅牢な処理
  6. 高度な分岐
  7. マージ機能

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]

Olivia Mackall[注釈 1] は、Mercurial の創始者であり、2016年後半までリード開発者を務めた。

歴史

2005年4月上旬、Linuxカーネルの開発に利用されていたBitKeeperのフリー版の配布停止が発表された(詳細についてはBitKeeper#価格変更参照)。Linuxカーネル開発者の一人でもあった Mackall はBitKeeperに代わる分散型バージョン管理システムの開発に乗り出し、4月19日に0.1をリリースした[7]。 既にLinuxカーネルの原著作者であるリーナス・トーバルズも同様の目的でGitの開発を開始していたが、Mackall は Linux kernel Mailing List 上で Mercurial の優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している等)を訴え、トーバルズと論争を繰り広げたこともあった。LinuxカーネルプロジェクトはMercurial ではなくGitを使用することを決定したが、現在[いつ?]、Mercurial は他の多くのプロジェクトで使用されている。「Git vs. Mercurial」はハッカー文化の聖戦の1つになった。

Mercurial メーリングリストの回答で、Mackall は「Mercurial」という名前がどのように選ばれたか説明した。

最初のリリースの少し前に、私は BitKeeper が犯しつつある大失敗に関するある記事を読みました。その記事にはラリー・マクボイ[注釈 2]は mercurial(移り気)であると書かれていました。この言葉が複数の意味を持つこと[注釈 3]、便利な略語があること、そしてそれまで私が使ってきた命名スキームと適合すること(私の電子メールアドレスを参照)から、すぐにピンとひらめいたのです。つまり、Mercurial はラリーを称えて付けられた名前です。同じことが Git にも当てはまるかどうかはわかりません[8][注釈 4]

設計

設計目標は、

である。またMercurialは完全なWebインターフェースを含んでいる。 原著作者はOlivia (Mattは旧名) Mackall で、2016年にMercurial開発から引退した[9]

Mercurial はSHA-1ハッシュを使用してリビジョンを識別する。ネットワークを介したリポジトリへのアクセスでは、Mercurial はHypertext Transfer Protocolベースのプロトコルを使用して、往復要求、新しい接続、および転送されるデータを削減しようとする。 Mercurial は、プロトコルがHypertext Transfer Protocolベースのプロトコルに非常に似ているSSHでも機能する。デフォルトでは、外部マージツールを呼び出す前にマージ (バージョン管理システム)を使用する。

主な機能

0.9.5版から、他のバージョン管理システムで管理されたソースコードを、取り込む機能がサポートされている[10]

採用事例

Mercurial はLinuxカーネルソースの管理に選択されていないが、Facebook[11]World Wide Web ConsortiumMozillaを含むいくつかの組織で採用されている。FacebookRustを使用してMononoke[12][13]を作成している。これは、大規模なマルチプロジェクトリポジトリをサポートするために特別に設計されたMercurial サーバである。

2013年FacebookはMercurial を採用し、大規模な統合コードリポジトリを処理するためのスケーリングに取り組み始めた[14]

Bitbucketは、Webベースのバージョン管理サービスが2020年6月にMercurial のサポートを終了すると発表し、新しいプロジェクトの1%のみがそれを使用していると説明した[15]

Mozillaは長年Firefoxなどの開発にMercurialとGitを利用していたが、2023年にGitへ一本化することを発表した[16][17][18]

Mercurial サーバとリポジトリ管理

ソースコードホスティング

以下のウェブサイトは、Mercurialリポジトリの無料のホスティングサーバを提供している[19]

Mercurial を使用したオープンソースプロジェクト

Mercurial 分散RCSを使用するいくつかのプロジェクト[25]

関連項目

脚注

  1. Olivia Mackall はかつて Matt Mackall と名乗っていた[6]
  2. BitKeeper の開発元である BitMover の CEO。
  3. "Mercurial" は「水銀の」・「機転のある」という意味も持つ。
  4. トーバルズはかつて「僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初は Linux で、今度は Git だ。」と述べている。"Git" はスラングで「間抜け」を意味する。

出典

外部リンク

Related Articles

Wikiwand AI