Mercurial

Mercurial (マーキュリアル) は、ソフトウェア開発者向けの分散型バージョン管理システムである。Microsoft Windows、FreeBSD、MacOS、Linux等の Unix 系システムでサポートされている。GPL v2+ の条件の下でフリーソフトウェアとしてリリースされている。 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 (コアモジュール) の実装が進められている。 Olivia Mackall は、Mercurial の創始者であり、2016年後半までリード開発者を務めた。 2005年4月上旬、Linuxカーネルの開発に利用されていたBitKeeperのフリー版の配布停止が発表された（詳細についてはBitKeeper#価格変更参照）。Linuxカーネル開発者の一人でもあった Mackall はBitKeeperに代わる分散型バージョン管理システムの開発に乗り出し、4月19日に0.1をリリースした。 既にLinuxカーネルの原著作者であるリーナス・トーバルズも同様の目的でGitの開発を開始していたが、Mackall は Linux kernel Mailing List 上で Mercurial の優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している等)を訴え、トーバルズと論争を繰り広げたこともあった。LinuxカーネルプロジェクトはMercurial ではなくGitを使用することを決定したが、現在、Mercurial は他の多くのプロジェクトで使用されている。「Git vs. Mercurial」はハッカー文化の聖戦の1つになった。 Mercurial メーリングリストの回答で、Mackall は「Mercurial」という名前がどのように選ばれたか説明した。 最初のリリースの少し前に、私は BitKeeper が犯しつつある大失敗に関するある記事を読みました。その記事にはラリー・マクボイは mercurial（移り気）であると書かれていました。この言葉が複数の意味を持つこと、便利な略語があること、そしてそれまで私が使ってきた命名スキームと適合すること（私の電子メールアドレスを参照）から、すぐにピンとひらめいたのです。つまり、Mercurial はラリーを称えて付けられた名前です。同じことが Git にも当てはまるかどうかはわかりません。 設計目標は、 高い性能とスケーラビリティ サーバが不要な、完全に分散した共同開発環境 テキストファイルとバイナリファイルの両方を効率よく扱うこと 概念上はシンプルなままで、高度なブランチ機能とマージ機能を持つこと である。またMercurialは完全なWebインターフェースを含んでいる。 原著作者はOlivia (Mattは旧名) Mackall で、2016年にMercurial開発から引退した(https://wiki.mercurial-scm.org/mpm)。 Mercurial はSHA-1ハッシュを使用してリビジョンを識別する。ネットワークを介したリポジトリへのアクセスでは、Mercurial はHypertext Transfer Protocolベースのプロトコルを使用して、往復要求、新しい接続、および転送されるデータを削減しようとする。 Mercurial は、プロトコルがHypertext Transfer Protocolベースのプロトコルに非常に似ているSSHでも機能する。デフォルトでは、外部マージツールを呼び出す前にマージ (バージョン管理システム)を使用する。 0.9.5版から、他のバージョン管理システムで管理されたソースコードを、取り込む機能がサポートされている。 Mercurial はLinuxカーネルソースの管理に選択されていないが、Facebook、World Wide Web Consortium、Mozillaを含むいくつかの組織で採用されている。FacebookはRustを使用してMononokeを作成している。これは、大規模なマルチプロジェクトリポジトリをサポートするために特別に設計されたMercurial サーバである。 2013年、FacebookはMercurial を採用し、大規模な統合コードリポジトリを処理するためのスケーリングに取り組み始めた。 Bitbucketは、Webベースのバージョン管理サービスが2020年6月にMercurial のサポートを終了すると発表し、新しいプロジェクトの1％のみがそれを使用していると説明した。 RhodeCode Inc. によるRhodeCode Kallithea(RhodeCodeのGPLv3フォーク) Fog Creek Software によるKiln Phacility によるPhabricator 参照: OSSホスティングサービスの比較、分散バージョン管理Git/Mercurial/Bazaar徹底比較 以下のウェブサイトは、Mercurial リポジトリの無料のソースコードホスティングを提供している。 アトラシアンによるBitbucket(2020年2月から非推奨、2020年6月1日から廃止されるMercurial リポジトリのサポート) SourceForge.net フリーソフトウェア財団によるSavannah Puszcza(Savannah姉妹サイト、ウクライナでホスト) OSDN Perforce Mozdev TuxFamily FusionForge その他 Mercurial 分散RCSを使用するいくつかのプロジェクト Adium GNU Health GNU Multi-Precision Library GNU Octave IcedTea LEMON LiquidFeedback Mozilla Nginx OpenJDK Orthanc Pidgin RhodeCode Roundup SDL Tryton WinDirStat wmii XEmacs Xine バージョン管理システムの一覧 ^ a b Olivia Mackall はかつて Matt Mackall と名乗っていた。 ^ BitKeeper の開発元である BitMover の CEO。 ^ "Mercurial" は「水銀の」・「機転のある」という意味も持つ。 ^ トーバルズはかつて「僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初は Linux で、今度は Git だ。」と述べている。"Git" はスラングで「間抜け」を意味する。 ^ “Mercurial”. mercurial-scm.org. 2024年7月7日閲覧。 ^ “Relicensing”. 2020年4月15日閲覧。 ^ “Relicensing”, Mercurial (wiki), Mercurial-scm.org, https://www.mercurial-scm.org/wiki/Relicensing . ^ “Mercurial (stable branch): b561f3a68e41 rust/README.rst”. www.mercurial-scm.org. 2020年4月15日閲覧。 ^ “Mercurial (stable branch): /rust/ ディレクトリ”. www.mercurial-scm.org. 2020年4月15日閲覧。 ^ “Matt Mackall is now Olivia Mackall”. Mercurial. 2021年5月28日閲覧。 ^ Matt Mackall (20 April 2005). "Mercurial v0.1 - a minimal scalable distributed SCM". Linux-Kernel (Mailing list). ^ Mackall, Matt (15 February 2012). "Why did Matt choose the name Mercurial?". Mercurial (Mailing list). 2016年6月7日閲覧。 ^ http://www.selenic.com/mercurial/wiki/index.cgi/ConvertExtension ^ “Scaling Mercurial at Facebook” (7 January 2014). 2020年3月7日閲覧。 ^ “A Mercurial source control server, specifically designed to support large monorepos.: facebookexperimental/mononoke” (31 January 2019). 2020年3月7日閲覧。 ^ “Google Groups”. groups.google.com. 2020年3月7日閲覧。 ^ “Scaling Mercurial at Facebook”. Facebook Code. Facebook. 13 October 2015閲覧。 ^ “Sunsetting Mercurial support in Bitbucket”. Bitbucket (20 August 2019). 29 August 2019閲覧。 ^ “Welcome [Puszcza]”. ps.gnu.org.ua. 2020年3月7日閲覧。 ^ “Let's start OSS development with Mercurial (Hg) - OSDN”. osdn.net. 2020年3月7日閲覧。 ^ “Try Helix TeamHub Free | Perforce”. info.perforce.com. 2020年3月7日閲覧。 ^ “TuxFamily: Free hosting for free people”. www.tuxfamily.org. 2020年3月7日閲覧。 ^ “Hosting”, Mercurial (wiki), Mercurial-scm.org, https://www.mercurial-scm.org/wiki/MercurialHosting . ^ “Some projects that use Mercurial”, Mercurial (wiki), Mercurial-scm.org, https://www.mercurial-scm.org/wiki/ProjectsUsingMercurial . ^ Reed, J Paul (12 April 2007). “Version Control System Shootout Redux Redux”. 2020年3月7日閲覧。 ^ James Gosling (October 2006). "Open Sourcing Sun's Java Platform Implementations, Part 1" (Interview). Interviewed by Robert Eckstein. Sun. 2009年3月1日時点のオリジナルよりアーカイブ。 ポータル FLOSS 公式ウェブサイト Official Mercurial Project Wiki Mercurial 日本語チュートリアル 分散バージョン管理Git/Mercurial/Bazaar徹底比較 Mercurialではじめる分散構成管理 Mercurial の利用 Mercurialでバージョン管理 表示 編集