Mercurial

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
Mercurial
New Mercurial logo.svg
開発元 Matt Mackall
初版 2005年4月19日(15年前) (2005-04-19
最新版 5.5.1 - 2020年9月1日(50日前) (2020-09-01[1][±]
リポジトリ www.mercurial-scm.org/repo/hg-stable
プログラミング言語 Python, Rust, C
対応OS クロスプラットフォーム
種別 バージョン管理ソフトウェア
ライセンス GPL v2+ [2]
公式サイト www.mercurial-scm.org ウィキデータを編集
テンプレートを表示

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

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]

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でも機能する。デフォルトでは、外部マージツールを呼び出す前にマージ (バージョン管理システム)を使用する。

主な機能[編集]

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

採用事例[編集]

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

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

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

Mercurial サーバとリポジトリ管理[編集]

ソースコードホスティング[編集]

参照: OSSホスティングサービスの比較分散バージョン管理Git/Mercurial/Bazaar徹底比較

以下のウェブサイトは、Mercurial リポジトリの無料のソースコードホスティングを提供している。

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

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

脚注[編集]

  1. ^ Mercurial”. mercurial-scm.org. 2020年10月21日閲覧。
  2. ^ Relicensing”. 2020年4月15日閲覧。
  3. ^ “Relicensing”, Mercurial (wiki), Mercurial-scm.org, https://www.mercurial-scm.org/wiki/Relicensing .
  4. ^ Mercurial (stable branch): b561f3a68e41 rust/README.rst”. www.mercurial-scm.org. 2020年4月15日閲覧。
  5. ^ Mercurial (stable branch): /rust/ ディレクトリ”. www.mercurial-scm.org. 2020年4月15日閲覧。
  6. ^ Matt Mackall (2005年4月20日). “Mercurial v0.1 - a minimal scalable distributed SCM”. Linux-Kernel mailing list.. http://www.ussg.iu.edu/hypermail/linux/kernel/0504.2/0670.html 
  7. ^ Mackall, Matt (2012年2月15日). “Why did Matt choose the name Mercurial?”. Mercurial mailing list.. https://www.mercurial-scm.org/pipermail/mercurial/2012-February/041807.html 2016年6月7日閲覧。 
  8. ^ Torvalds has said: "I'm an egotistical bastard, so I name all my projects after myself. First Linux, now git."
  9. ^ http://www.selenic.com/mercurial/wiki/index.cgi/ConvertExtension
  10. ^ Scaling Mercurial at Facebook” (2014年1月7日). 2020年3月7日閲覧。
  11. ^ A Mercurial source control server, specifically designed to support large monorepos.: facebookexperimental/mononoke” (2019年1月31日). 2020年3月7日閲覧。
  12. ^ Google Groups”. groups.google.com. 2020年3月7日閲覧。
  13. ^ Scaling Mercurial at Facebook”. Facebook Code. Facebook. 2015年10月13日閲覧。
  14. ^ Sunsetting Mercurial support in Bitbucket”. Bitbucket (2019年8月20日). 2019年8月29日閲覧。
  15. ^ Welcome [Puszcza]”. ps.gnu.org.ua. 2020年3月7日閲覧。
  16. ^ Let's start OSS development with Mercurial (Hg) - OSDN”. osdn.net. 2020年3月7日閲覧。
  17. ^ Try Helix TeamHub Free | Perforce”. info.perforce.com. 2020年3月7日閲覧。
  18. ^ TuxFamily: Free hosting for free people”. www.tuxfamily.org. 2020年3月7日閲覧。
  19. ^ “Hosting”, Mercurial (wiki), Mercurial-scm.org, https://www.mercurial-scm.org/wiki/MercurialHosting .
  20. ^ “Some projects that use Mercurial”, Mercurial (wiki), Mercurial-scm.org, https://www.mercurial-scm.org/wiki/ProjectsUsingMercurial .
  21. ^ Reed, J Paul (2007年4月12日). “Version Control System Shootout Redux Redux”. 2020年3月7日閲覧。
  22. ^ James Gosling (2006年10月). Open Sourcing Sun's Java Platform Implementations, Part 1. インタビュアー:Robert Eckstein. Sun. オリジナルの1 March 2009時点におけるアーカイブ。. https://web.archive.org/web/20090301091240/http://java.sun.com/developer/technicalArticles/Interviews/gosling_os1_qa.html 

外部リンク[編集]