你說得對。 CVS是一個不錯的選擇。缺乏原子檢查足以在我的書中取消資格。人們喜歡它,因爲他們知道它,他們不明白它有什麼問題。
硬件公司和軟件公司使用系統的唯一區別往往是RTL模塊具有非常明確的界面,通常由一個人擁有,因此開發非常細分。由於減少了對分支的需求,因此對於集中式系統來說,這實際上工作得很好。開發者不會像對付腳趾一樣。
我見過一家硬件公司試用Mercurial,這是一團糟。並不是說這是錯誤的工具,而是他們有一個CVS思維模式,並試圖使它像CVS一樣工作。我寫了一個頗受歡迎的賬號here。
我個人認爲SVN非常適合硬件開發,特別是來自CVS的人。它能夠檢出子樹也是有用的。也就是說,我目前正在一個試圖與SVN進行「特色分支」工作流程的地方工作,並且這種合併有許多缺陷。他們將來會考慮git/hg。儘管如此,他們仍是一個小型,進取的公司
從CVS搬到Mercurial的公司登陸Perforce。對他們來說,這全是關於支持合同,並有人責怪。對於用戶....好吧....我認爲它給用戶帶來了非常複雜的前景。整個工作空間概念只是矯枉過正,分支管理是一個痛苦。作爲一個系統,它是有能力的,但有很多工作要使用。
如果我要在另一家硬件公司部署Mercurial,我會大量使用sub-repositories。我會這樣做,以恢復從subversion中檢索子樹的有用部分,即可以將RTL模塊檢出並單獨分支。它也給了我一個集成項目的概念,這個項目將是我將所有子模塊放入的項目。然後在一定程度上將RTL版本從RTL開發中解耦出來,並且促進使用相同模塊的不同芯片。此外,通過保持模塊獨立,歷史也保持獨立,使模塊上的跟蹤更容易。最後,它避免了我在其他答案中描述的「數百名開發人員訪問一箇中央倉庫並陷入合併競爭」的問題。