Mercurial
開發者 | Matt Mackall |
---|---|
當前版本 | 6.3.1(2022年11月9日 | )
預覽版本 | 6.3rc0(2022年10月24日 | )
源代碼庫 | |
編程語言 | Python和C語言 |
操作系統 | 類Unix, Windows, Mac OS X |
類型 | 版本控制 |
許可協議 | GPL v2 |
網站 | www |
Mercurial是跨平台的分布式版本控制軟件,主要由Python語言實現,但也包含用C語言實現的二進制比較工具。Mercurial一開始的主要運行平台是Linux,現在Mercurial已經移植到Windows、Mac OS X和大多數的類Unix系統中。Mercurial主要由命令行程序組成,現在也有了圖形用戶界面。對Mercurial的所有操作都由用不同的關鍵字作為參數調用程序「hg」來實現,Hg是參考水銀的化學符號而取的名字。
Mercurial的主要設計目標包括高性能、可擴展性、分散性、完全分布式合作開發、能同時高效地處理純文本和二進制文件,以及分支和合併功能,以此同時保持系統的簡潔性[1]。Mercurial也包括一個集成的Web界面。
Mercurial的創建者和主要開發人員是Matt Mackal。其源代碼採用GNU通用公共許可證第二版為授權,確保了Mercurial是一個自由軟件。
技術細節
Mercurial採用SHA-1散列算法來識別修訂版本。Mercurial使用一個基於HTTP的協議來接入網絡中的版本庫,旨在減少往返的提交、連接數和數據傳輸。Mercurial也可以工作在ssh環境下,其協議和基於HTTP的協議非常相似。
文檔
Bryan O'Sullivan已寫作了一個全面的參考手冊:Mercurial:權威指南[2]。該手冊根據開放出版許可協議免費提供。
歷史
Mackall在2005年4月19日第一次發布了Mercurial。[3]其動機是當月Bitmover公司宣布撤銷其免費版本的BitKeeper。
2005年時BitKeeper已經被用於Linux內核的項目版本控制。Mackall決定為Linux內核開發寫一個分布式的版本控制軟件來替代BitKeeper。在該項目啟動數天前,Linus Torvalds基於類似的目的開始了另一個現在相當知名的版本控制軟體Git。[4]
Linux內核開發項目決定使用Git而不是Mercurial,但Mercurial也使用於在很多其他的項目中(見下文)。
相關軟件
- Mercurial圖形用戶界面有:Hgk(Tcl/Tk)。該程序作為Mercurial的插件而開發,現在被直接包含於正式版本中。界面可以通過命令命令'hg view'來調用(如果安裝了該擴展的話)。hgk最初來源於名為gitk的類似工具。hgk有一個名為hgview (頁面存檔備份,存於網際網路檔案館)是純Python編寫的替代軟件,同時提供GTK和QT界面。
- 合併用的工具包括(h)gct(Qt)和Meld。
- 轉換插件可以將CVS、Darcs、Git、GNU arch、Monotone、Perforce、GNU Bazaar和Subversion的版本庫轉換為Mercurial的版本庫。
- 從第6版Mercurial開始支持NetBeans。
- TortoiseHg提供了一個面向Windows的基於右鍵菜單的友好界面,也用於GNOME的Nautilus文件管理器。
其他
代碼託管
以下網站提供免費的Mercurial版本庫託管:
- Bitbucket
- Google Code[5]
- JavaForge [6]
- Project Kenai by Sun Microsystems
- SourceForge
- GNU Savannah
- Alioth by Debian
- BerliOS
- 在Mercurial wiki中列出的其他網站
- CodePlex (頁面存檔備份,存於網際網路檔案館)
採用Mercurial的項目
這些項目(部分)使用了Mercurial作為版本控制[7]
參見
參考文獻
- ^ Matt Mackall, Towards a Better SCM: Revlog and Mercurial (頁面存檔備份,存於網際網路檔案館), Ottawa Linux Symposium Proceedings, 2006.
- ^ Bryan O'Sullivan. Mercurial: The Definitive Guide. 2007-01-01 [2009-10-07]. (原始內容存檔於2019-10-25).
- ^ Mackall, Matt. Mercurial v0.1 - a minimal scalable distributed SCM. Linux kernel (郵件列表). 2005-04-20 [2009-10-07]. (原始內容存檔於2008-10-10).
- ^ Mackall, Matt. Re: Mercurial 0.4b vs git patchbomb benchmark. Linux kernel (郵件列表). 2005-04-29 [2009-10-07]. (原始內容存檔於2012-07-09).
- ^ Google Code Blog: Mercurial Now Available to All Open Source Projects. 2009-05-28 [2009-10-07]. (原始內容存檔於2012-12-01).
- ^ MercurialEclipse 1.6.0: Enterprise Codebases with Ease. [2010-06-17]. (原始內容存檔於2010-05-14).
- ^ 一些使用Mercurial的项目. [2009-10-07]. (原始內容存檔於2009-04-22).
- ^ J. Paul Reed. Version Control System Shootout Redux Redux. 2007-04-12 [2009-10-07]. (原始內容存檔於2009-03-21).
- ^ James Gosling. James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 1. 訪談 with Robert Eckstein. October 2006 [2009-10-07]. (原始內容存檔於2009-03-01).
- ^ OpenSolaris SCM Project History. 2006-10-05 [2009-10-07]. (原始內容存檔於2009-09-25).
- ^ David Wood. We decided in the end to use Mercurial rather than Git.. 2009-04-06 [2009-05-07]. (原始內容存檔於2010-12-06).
- ^ Ian Pratt. mercurial now live. Xen-devel (郵件列表). 2005-07-01 [2009-10-07]. (原始內容存檔於2009-02-18).
- ^ Timo Sirainen. CVS to Mercurial switch. Dovecot-news (郵件列表). 2007-05-19 [2009-10-07]. (原始內容存檔於2015-09-23).
- ^ Switch to hg.netbeans.org completed. January 2008 [2009-10-07]. (原始內容存檔於2012-09-18).
- ^ x265: log. [2014-06-18]. (原始內容存檔於2020-11-30).
外部連結
- (英文)官方Mercurial項目wiki
- (英文)非官方的Mercurial主頁 (頁面存檔備份,存於網際網路檔案館)
- (英文)Mercurial:權威指南 (頁面存檔備份,存於網際網路檔案館),Bryan O'Sullivan 2009年通過O'Reilly出版,免費在網上發布
- Mercurial: an alternative to git from LWN.net
- TeamWare用戶 (頁面存檔備份,存於網際網路檔案館)
- Google TechTalk on Mercurial (頁面存檔備份,存於網際網路檔案館)
- Subversion還是CVS、Bazaar或者Mercurial?比較四個開源版本控制系統