[svn] Git,Mercurial和Bazaar的相對優勢和劣勢是什麼?


Answers

Ogre 3D項目的Steve Streeting(9/28/2009)發表了一篇關於這個主題的博客文章,他對Git,Mercurial和Bazaar進行了非常好的甚至是比較的比較

最終,他發現所有三個優勢和劣勢,並沒有明確的贏家。 從好的一面來看,他給出了一張很棒的桌子來幫助你決定該去哪。

它是一個簡短的閱讀,我強烈推薦它。

Question

這裡的人們認為Git,Mercurial和Bazaar的相對優勢和劣勢是什麼?

在考慮彼此之間以及SVN和Perforce等版本控制系統時,應該考慮哪些問題?

在規劃從SVN到其中一個分佈式版本控制系統的遷移時,您會考慮哪些因素?




這裡的人們認為Git,Mercurial和Bazaar的相對優勢和劣勢是什麼?

這是一個非常開放的問題,與flamebait接壤。

Git是最快的,但所有三個都足夠快。 Bazaar是最靈活的(它對SVN存儲庫有透明的讀寫支持),並且關心用戶體驗。 Mercurial位於中間的某個地方。

這三個系統都有很多粉絲。 我個人是巴扎狂熱愛好者。

在考慮彼此之間以及SVN和Perforce等版本控制系統時,應該考慮哪些問題?

前者是分佈式系統。 後者是集中式系統。 另外,Perforce是專有的,而所有其他人都是免費的, 就像演講中一樣

集中式與分散式相比,您在其範疇內提及的任何系統都是更重要的選擇。

在規劃從SVN到其中一個分佈式版本控制系統的遷移時,您會考慮哪些因素?

首先,缺少TortoiseSVN的好替代品。 儘管Bazaar正在製作自己的烏龜版本 ,但截至2008年9月,該版本尚未發布。

然後,培訓關鍵人員如何使用分散系統會影響他們的工作。

最後,與系統的其他部分進行集成,如問題跟踪器,夜間構建系統,自動化測試系統等。




Linus Torvalds在git上有很好的視頻。 他是Git的創造者,所以這是他所推崇的,但在視頻中他解釋了什麼是分佈式SCM,以及為什麼他們比集中式更好。 有很多比較git(mercurial被認為是OK)和cvs / svn / perforce。 受眾也有關於向分佈式SCM遷移的問題。

我發現這種材料很有啟發性,而且我賣給了分佈式SCM。 但儘管萊納斯的努力我的選擇是mercurial。 原因是bitbucket.org,我發現它更好(更慷慨),然後github。

我需要在這裡說一句警告:萊納斯有非常積極的風格,我想他很想笑,但我沒有笑。 除此之外,如果您是分佈式SCM的新手,並且考慮從SVN遷移,視頻就非常棒。

http://www.youtube.com/watch?v=4XpnKHJAok8




這裡的人們認為Git,Mercurial和Bazaar的相對優勢和劣勢是什麼?

在我看來, Git的優勢在於其清晰的底層設計和非常豐富的功能。 它也有我認為對多分支存儲庫和管理分支機構繁多工作流程的最佳支持。 它速度非常快,並且庫的大小很小。

它具有一些有用的功能,但需要花費一些努力才能使用它們。 這些包括工作區域和存儲庫數據庫之間的可見中間暫存ara(索引),這允許在更複雜的情況下更好地合併解決方案,增量合作和與臟樹合作; 使用相似性啟發式檢測重命名和拷貝,而不是使用某種文件ID來跟踪它們,這很好運行,並且允許在文件之後移動代碼並且不僅批量重命名,而且允許責備(註釋)。

它的缺點之一是MS Windows支持滯後並且不完整。 另一個被認為的缺點是,它沒有像Mercurial那樣有很好的文檔記錄,並且比競爭對手更不方便用戶,但它有所變化。

在我看來, Mercurial的優勢在於其良好的性能和小的存儲庫大小,並且具有良好的MS Windows支持。

主要缺點是在我看來,地方分支機構(在單一存儲庫中的多個分支機構)仍然是二等公民,並且以奇怪而復雜的方式實施標籤。 而且它處理文件重命名的方式並不理想(但這種遷移已經改變)。 Mercurial不支持章魚合併(與兩個以上的父母)。

從我聽到的並且閱讀主集市的好處是它容易支持集中化的工作流程(這也是不利的,集中的概念在不應該的地方可見),跟踪文件和目錄的重命名。

它的主要缺點是具有長非線性歷史的大型存儲庫的性能和存儲庫容量(至少對於不太大的存儲庫而言性能得到改進),默認範例是每個存儲庫一個牧場(儘管您可以設置它來共享數據) ,集中的概念(但也從我聽到的變化)。

Git使用C語言,shell腳本和Perl編寫,並且可以編寫腳本; Mercurial使用C(核心,性能)和Python編寫,並為擴展提供API; Bazaar使用Python編寫,並提供擴展API。

在考慮彼此之間以及SVN和Perforce等版本控制系統時,應該考慮哪些問題?

像Subversion(SVN),Perforce或ClearCase等版本控制系統是集中版本控制系統。 Git,Mercurial,Bazaar(以及Darcs,Monotone和BitKeeper)都是分佈式版本控制系統。 分佈式版本控制系統允許更廣泛的工作流程。 他們允許使用“準備好時發布”。 他們對分支和合併以及分支機構繁重的工作流程有更好的支持。 您無需信任具有提交訪問權限的人員即可通過簡單的方式獲得他們的貢獻。

在規劃從SVN到其中一個分佈式版本控制系統的遷移時,您會考慮哪些因素?

你可能要考慮的一個因素是支持SVN的引入; Git有git-svn,Bazaar有bzr-svn,Mercurial有hgsubversion擴展。

免責聲明:我是Git用戶和小時間貢獻者,並觀看(並參與)git郵件列表。 我只通過他們的文檔,IRC和郵件列表的各種討論以及比較各種版本控制系統(其中一些在Git Wiki上的GitComparison頁面上列出)進行比較的博客帖子和文章來了解Mercurial和Bazaar。




你的主要問題是這些是分佈式 SCM,因此需要對用戶的思維進行一些改變。 一旦人們習慣了這個想法,技術細節和使用模式就會落到實處,但不要低估最初的障礙,特別是在企業環境中。 請記住,所有問題都是人為問題。




這是一個很大的問題,很大程度上取決於上下文,這會花費您很多時間來輸入這些小文本框之一。 而且,所有這三者在用於大多數程序員所做的常用工具時都顯得非常相似,因此即使了解這些差異也需要一些相當深奧的知識。

如果您可以將這些工具的分析細分到您有更具體問題的地方,您可能會得到更好的答案。




我使用Bazaar一段時間,我喜歡很多,但它只是小項目,即使如此,它很慢。 如此容易學習,但不是超快。 這是非常x平台。

我目前使用Git,自1.6版以來,我非常喜歡Git,它使用的命令更加類似於其他VCS。

我認為我使用DVCS的主要差異是:

  1. Git是最具活力的社區,看到關於Git的文章是很常見的
  2. GitHub真的很有趣。 Launchpad.net沒問題,但沒有Github的樂趣
  3. Git的工作流工具的數量非常棒。 它被整合到這個地方。 Bzr有一些,但幾乎沒有多少或保持良好。

總之,當我在DVCS上切齒時,Bzr非常棒,但我現在對Git和Github非常滿意。




看看Python開發人員最近的比較: http://wiki.python.org/moin/DvcsComparison : http://wiki.python.org/moin/DvcsComparison 。 他們根據三個重要原因選擇了Mercurial:

選擇使用Mercurial的原因有三個重要原因:

  • 根據一項小型調查,Python開發人員對使用Mercurial比在Bazaar或Git中更感興趣。
  • Mercurial是用Python編寫的,這與python-dev傾向於“吃自己的狗食”一致。
  • Mercurial比bzr快得多(它比git慢,但是差距要小得多)。
  • 對於SVN用戶來說,Mercurial比Bazaar更容易學習。

(來自http://www.python.org/dev/peps/pep-0374/






Links