2012-06-22 37 views
2

你知道的任何大公司(最好是硬件)的任何硬件成功地使用水銀作爲自己的版本控制系統(VCS)。DO(ASIC)公司使用水銀(汞)

我有SVN/CVS經驗/ perforce和一個小混帳。 內部政治是推動我們走向CVS,雖然我覺得這是一個糟糕的選擇:

的原因,我喜歡Perforce公司最佳:

  1. 戰鬥在H測試/ w的公司。
  2. 好處理大型二進制文件。
  3. 很好地處理大型項目> 10G。
  4. 非常明智地處理符號鏈接。
  5. 提供原子簽入。
  6. 靈活的分支機制。
  7. 合併工具似乎運作良好。
  8. 用戶從不需要使用管理員命令。

的原因,我不喜歡CVS:

  1. 不支持原子簽入。
  2. 數據庫可能會受到損壞。
  3. 可能需要管理員命令來修復用戶錯誤。

的原因,我喜歡CVS:

  1. 戰鬥測試。
  2. 大多數人至少有點熟悉它。

回答

4

你說得對。 CVS是一個不錯的選擇。缺乏原子檢查足以在我的書中取消資格。人們喜歡它,因爲他們知道它,他們不明白它有什麼問題。

硬件公司和軟件公司使用系統的唯一區別往往是RTL模塊具有非常明確的界面,通常由一個人擁有,因此開發非常細分。由於減少了對分支的需求,因此對於集中式系統來說,這實際上工作得很好。開發者不會像對付腳趾一樣。

我見過一家硬件公司試用Mercurial,這是一團糟。並不是說這是錯誤的工具,而是他們有一個CVS思維模式,並試圖使它像CVS一樣工作。我寫了一個頗受歡迎的賬號here

我個人認爲SVN非常適合硬件開發,特別是來自CVS的人。它能夠檢出子樹也是有用的。也就是說,我目前正在一個試圖與SVN進行「特色分支」工作流程的地方工作,並且這種合併有許多缺陷。他們將來會考慮git/hg。儘管如此,他們仍是一個小型,進取的公司

從CVS搬到Mercurial的公司登陸Perforce。對他們來說,這全是關於支持合同,並有人責怪。對於用戶....好吧....我認爲它給用戶帶來了非常複雜的前景。整個工作空間概念只是矯枉過正,分支管理是一個痛苦。作爲一個系統,它是有能力的,但有很多工作要使用。

如果我要在另一家硬件公司部署Mercurial,我會大量使用sub-repositories。我會這樣做,以恢復從subversion中檢索子樹的有用部分,即可以將RTL模塊檢出並單獨分支。它也給了我一個集成項目的概念,這個項目將是我將所有子模塊放入的項目。然後在一定程度上將RTL版本從RTL開發中解耦出來,並且促進使用相同模塊的不同芯片。此外,通過保持模塊獨立,歷史也保持獨立,使模塊上的跟蹤更容易。最後,它避免了我在其他答案中描述的「數百名開發人員訪問一箇中央倉庫並陷入合併競爭」的問題。