コンテンツにスキップ

「Mercurial」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m 曖昧さ回避ページフォークへのリンクを解消、要曖昧さ回避を追加(DisamAssist使用)
 
(8人の利用者による、間の8版が非表示)
27行目: 27行目:
その一方で、Mercurial には、統合された Web インターフェイスが含まれており、[[グラフィカルユーザインタフェース]]の拡張機能が利用できる。 [[TortoiseHg]] およびいくつかの [[統合開発環境|IDE]] では、Mercurial によるバージョン管理のサポートを提供する。また他のバージョン管理システム、特に [[Apache Subversion]] のユーザの移行を容易にする手段も講じている。
その一方で、Mercurial には、統合された Web インターフェイスが含まれており、[[グラフィカルユーザインタフェース]]の拡張機能が利用できる。 [[TortoiseHg]] およびいくつかの [[統合開発環境|IDE]] では、Mercurial によるバージョン管理のサポートを提供する。また他のバージョン管理システム、特に [[Apache Subversion]] のユーザの移行を容易にする手段も講じている。


Mercurial は主に [[Python]] で実装されている。[[バイナリ]] [[Diff]] 実装は [[C言語|C 言語]]で記述されていた。現在は[[Rust (プログラミング言語)|Rust]]を用いた chg (差分取得。[[C言語]] からの置換え)、hgcli (クライアント用コマンドツール)、hg-core (コアモジュール) の実装が進められている。<ref>{{Cite web|title=Mercurial (stable branch): b561f3a68e41 rust/README.rst|url=https://www.mercurial-scm.org/repo/hg-stable/file/tip/rust/README.rst|website=www.mercurial-scm.org|accessdate=2020-04-15}}</ref><ref>{{Cite web|title=Mercurial (stable branch): /rust/ ディレクトリ|url=https://www.mercurial-scm.org/repo/hg-stable/file/tip/rust|website=www.mercurial-scm.org|accessdate=2020-04-15|publisher=}}</ref>
Mercurial は主に [[Python]] で実装されている。[[バイナリ]] [[Diff]] 実装は [[C言語|C 言語]]で記述されていた。現在は[[Rust (プログラミング言語)|Rust]]を用いた chg (差分取得。[[C言語]] からの置換え)、hgcli (クライアント用コマンドツール)、hg-core (コアモジュール) の実装が進められている。<ref>{{Cite web|title=Mercurial (stable branch): b561f3a68e41 rust/README.rst|url=https://www.mercurial-scm.org/repo/hg-stable/file/tip/rust/README.rst|website=www.mercurial-scm.org|accessdate=2020-04-15}}</ref><ref>{{Cite web|和書|title=Mercurial (stable branch): /rust/ ディレクトリ|url=https://www.mercurial-scm.org/repo/hg-stable/file/tip/rust|website=www.mercurial-scm.org|accessdate=2020-04-15|publisher=}}</ref>


Olivia Mackall{{efn|Olivia Mackall はかつて Matt Mackall と名乗っていた<ref>{{Cite web |url=https://www.mercurial-scm.org/repo/hg-stable/rev/d4ba4d51f85f |title=Matt Mackall is now Olivia Mackall |website=Mercurial |url-status=live |access-date=2021-05-28}}</ref>。|name=name change}} は、Mercurial の創始者であり、2016年後半までリード開発者を務めた。
Olivia Mackall{{efn|Olivia Mackall はかつて Matt Mackall と名乗っていた<ref>{{Cite web |url=https://www.mercurial-scm.org/repo/hg-stable/rev/d4ba4d51f85f |title=Matt Mackall is now Olivia Mackall |website=Mercurial |url-status=live |access-date=2021-05-28}}</ref>。|name=name change}} は、Mercurial の創始者であり、2016年後半までリード開発者を務めた。


== 歴史 ==
== 歴史 ==
[[2005年]][[4月]]上旬、[[Linuxカーネル]]の開発に利用されていた[[BitKeeper]]のフリー版の配布停止が発表された(詳細については[[BitKeeper#価格変更]]参照)。Linuxカーネル開発者の一人でもあった Mackall は[[BitKeeper]]に代わる分散型[[バージョン管理システム]]の開発に乗り出し、[[4月19日]]に0.1をリリースした<ref>{{cite mailing list|author=Matt Mackall|date=2005-04-20|title=Mercurial v0.1 - a minimal scalable distributed SCM|url=http://www.ussg.iu.edu/hypermail/linux/kernel/0504.2/0670.html|mailinglist=[[Linux kernel mailing list|Linux-Kernel]]}}</ref> 既に[[Linuxカーネル]]の原著作者である[[リーナス・トーバルズ]]も同様の目的で[[Git]]の開発を開始していたが、Mackall は Linux kernel Mailing List 上で Mercurial の優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している等)を訴え、トーバルズと論争を繰り広げたこともあった。[[Linuxカーネル]]プロジェクトはMercurial ではなくGitを使用することを決定したが、現在、Mercurial は他の多くのプロジェクトで使用されている。「Git vs. Mercurial」は[[ハッカー文化]]の聖戦の1つになった。
[[2005年]][[4月]]上旬、[[Linuxカーネル]]の開発に利用されていた[[BitKeeper]]のフリー版の配布停止が発表された(詳細については[[BitKeeper#価格変更]]参照)。Linuxカーネル開発者の一人でもあった Mackall は[[BitKeeper]]に代わる分散型[[バージョン管理システム]]の開発に乗り出し、[[4月19日]]に0.1をリリースした<ref>{{cite mailing list|author=Matt Mackall|date=2005-04-20|title=Mercurial v0.1 - a minimal scalable distributed SCM|url=http://www.ussg.iu.edu/hypermail/linux/kernel/0504.2/0670.html|mailinglist=[[Linux kernel mailing list|Linux-Kernel]]}}</ref> 既に[[Linuxカーネル]]の原著作者である[[リーナス・トーバルズ]]も同様の目的で[[Git]]の開発を開始していたが、Mackall は Linux kernel Mailing List 上で Mercurial の優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している等)を訴え、トーバルズと論争を繰り広げたこともあった。[[Linuxカーネル]]プロジェクトはMercurial ではなくGitを使用することを決定したが、現在、Mercurial は他の多くのプロジェクトで使用されている。「Git vs. Mercurial」は[[ハッカー文化]]の聖戦の1つになった。


Mercurial メーリングリストの回答で、Mackall は「Mercurial」という名前がどのように選ばれたか説明した。
Mercurial メーリングリストの回答で、Mackall は「Mercurial」という名前がどのように選ばれたか説明した。<blockquote>最初のリリースの少し前に、私は [[BitKeeper]] が犯しつつある大失敗に関するある記事を読みました。その記事には[[ラリー・マクボイ]]{{efn|BitKeeper の開発元である BitMover の CEO。}}は mercurial(気まぐれ)であると書かれていました。この言葉が複数の意味を持つこと{{efn|"Mercurial" は「水銀の」・「機敏な」という意味も持つ。}}、便利な略語があること、そしてそれまで私が使ってきた命名スキームと適合すること(私の電子メールアドレスを参照)から、すぐにピンとひらめいたのです。つまり、Mercurial はラリーを称えて付けられた名前です。同じことが [[Git]] にも当てはまるかどうかはわかりません<ref>{{cite mailing list|last=Mackall|first=Matt|title=Why did Matt choose the name Mercurial?|url=https://www.mercurial-scm.org/pipermail/mercurial/2012-February/041807.html|mailinglist=Mercurial|date=15 February 2012|accessdate=7 June 2016}}</ref>{{efn|トーバルズはかつて''「僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初は Linux で、今度は Git だ。」''と述べている。"Git" はスラングで「間抜け」を意味する。}}。</blockquote>

{{quote|
最初のリリースの少し前に、私は [[BitKeeper]] が犯しつつある大失敗に関するある記事を読みました。その記事には[[ラリー・マクボイ]]{{efn|BitKeeper の開発元である BitMover の CEO。}}は mercurial(移り気)であると書かれていました。この言葉が複数の意味を持つこと{{efn|"Mercurial" は「水銀の」・「機転のある」という意味も持つ。}}、便利な略語があること、そしてそれまで私が使ってきた命名スキームと適合すること(私の電子メールアドレスを参照)から、すぐにピンとひらめいたのです。つまり、Mercurial はラリーを称えて付けられた名前です。同じことが [[Git]] にも当てはまるかどうかはわかりません<ref>{{cite mailing list|last=Mackall|first=Matt|title=Why did Matt choose the name Mercurial?|url=https://www.mercurial-scm.org/pipermail/mercurial/2012-February/041807.html|mailinglist=Mercurial|date=15 February 2012|accessdate=7 June 2016}}</ref>{{efn|トーバルズはかつて''「僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初は Linux で、今度は Git だ。」''と述べている。"Git" はスラングで「間抜け」を意味する。}}。
}}


== 設計 ==
== 設計 ==
45行目: 49行目:


である。またMercurialは完全なWebインターフェースを含んでいる。
である。またMercurialは完全なWebインターフェースを含んでいる。
原著作者はMatt Mackall で、現在も主要開発者である
原著作者はOlivia (Mattは旧名) Mackall で、2016年にMercurial開発から引退した(https://wiki.mercurial-scm.org/mpm<nowiki/>)


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


== 主な機能 ==
== 主な機能 ==
62行目: 66行目:


* RhodeCode Inc. によるRhodeCode
* RhodeCode Inc. によるRhodeCode
* Kallithea(RhodeCodeの[[GPLv3]][[フォーク]]{{要曖昧さ回避|date=2023年3月}})
* Kallithea(RhodeCodeの[[GPLv3]][[フォーク (ソフトウェア開発)|フォーク]])
* Fog Creek Software によるKiln
* Fog Creek Software によるKiln
* Phacility による[[Phabricator]]
* Phacility による[[Phabricator]]


=== [[ソースコードホスティング]] ===
=== ソースコードホスティング ===
参照: [[OSSホスティングサービスの比較]]、[https://www.atmarkit.co.jp/ait/articles/0901/14/news133.html 分散バージョン管理Git/Mercurial/Bazaar徹底比較]
参照: [[OSSホスティングサービスの比較]]、[https://www.atmarkit.co.jp/ait/articles/0901/14/news133.html 分散バージョン管理Git/Mercurial/Bazaar徹底比較]


106行目: 110行目:
* [[Xine]]
* [[Xine]]
{{div col end}}
{{div col end}}

== 関連項目 ==
== 関連項目 ==
*[[バージョン管理システムの一覧]]
*[[バージョン管理システムの一覧]]
116行目: 121行目:


== 外部リンク ==
== 外部リンク ==
{{Portal|FLOSS|[[ファイル:FLOSS_logo.png|41px]]}}
{{Portal|FLOSS|[[ファイル:FLOSS_logo.svg|41px]]}}
* {{official website}}
* {{official website}}
* [https://www.mercurial-scm.org/wiki/ Official Mercurial Project Wiki]
* [https://www.mercurial-scm.org/wiki/ Official Mercurial Project Wiki]
127行目: 132行目:
{{バージョン管理システム}}
{{バージョン管理システム}}
{{FLOSS-stub}}
{{FLOSS-stub}}
{{DEFAULTSORT:Mercurial}}
{{DEFAULTSORT:まあきゆりある}}
[[Category:バージョン管理システム]]
[[Category:バージョン管理システム]]
[[Category:Python]]
[[Category:Python]]

2024年3月8日 (金) 12:54時点における最新版

Mercurial
開発元 Olivia Mackall[注釈 1]
初版 2005年4月19日 (19年前) (2005-04-19)
最新版 6.6.4 - 2024年6月12日 (5か月前) (2024-06-12)[1] [±]
リポジトリ ウィキデータを編集
プログラミング
言語
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]

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開発から引退した(https://wiki.mercurial-scm.org/mpm)。

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

出典

[編集]
  1. ^ Mercurial”. mercurial-scm.org. 2024年7月7日閲覧。
  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 is now Olivia Mackall”. Mercurial. 2021年5月28日閲覧。
  7. ^ Matt Mackall (20 April 2005). "Mercurial v0.1 - a minimal scalable distributed SCM". Linux-Kernel (Mailing list).
  8. ^ Mackall, Matt (15 February 2012). "Why did Matt choose the name Mercurial?". Mercurial (Mailing list). 2016年6月7日閲覧
  9. ^ http://www.selenic.com/mercurial/wiki/index.cgi/ConvertExtension
  10. ^ Scaling Mercurial at Facebook” (7 January 2014). 2020年3月7日閲覧。
  11. ^ A Mercurial source control server, specifically designed to support large monorepos.: facebookexperimental/mononoke” (31 January 2019). 2020年3月7日閲覧。
  12. ^ Google Groups”. groups.google.com. 2020年3月7日閲覧。
  13. ^ Scaling Mercurial at Facebook”. Facebook Code. Facebook. 13 October 2015閲覧。
  14. ^ Sunsetting Mercurial support in Bitbucket”. Bitbucket (20 August 2019). 29 August 2019閲覧。
  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 (12 April 2007). “Version Control System Shootout Redux Redux”. 2020年3月7日閲覧。
  22. ^ James Gosling (October 2006). "Open Sourcing Sun's Java Platform Implementations, Part 1" (Interview). Interviewed by Robert Eckstein. Sun. 2009年3月1日時点のオリジナルよりアーカイブ。

外部リンク

[編集]