2014-01-14 60 views
2

我曾經使用過ClearCase,以及Subversion,bazaar,mercurial,git和Team Foundation Server。當我使用ClearCase時,我們使用了UCM,而我真正喜歡的功能之一是能夠按組件分解軟件,並設置和推薦這些組件的基線。Clearcase的VCS替代方案有助於實現基線功能

我目前需要類似的功能。我們有一個庫用於多種產品,但是當開發人員進行更改時,他們通常在使用一種產品。他們可能會改變影響其他產品的界面或功能,但對於一個開發人員來說,整合和測試所有產品的變更是不切實際的。相反,我希望讓開發人員在他們的產品上開展工作,推薦一個新的基準,然後在適當的時候,其他開發人員可能會選擇將更改集成到其他產品的工作。

我希望VCS支持該工作流程。我想考慮ClearCase的替代方案,如果它們存在的話。我非常熟悉實施ClearCase的「挑戰」。 我並非試圖發表意見 - 我只想知道是否有其他VCS支持此功能(或者如果有人開發了自己的工具或流程以與其他VCS一起模擬此功能)以及如何實現它。

我不認爲svn中的標籤(或其他VCS產品中的標籤)是答案。在ClearCase中,當你推薦一個新的基線時,它阻止了開發人員在舊基線上工作 - 他們被迫重新綁定,並繼續從新基線開始工作。我不知道如何在任何其他VCS中強制執行rebase操作。

我可以把圖書館放在自己的回購中,但是這會導致其他問題。我仍然需要一種方法來指定(構建,發佈,開發人員「簽出」),使用哪個版本/標記/基線,以及讓VCS的這部分對跟蹤目的非常有用。

+0

「軟件產品線管理」工具可能能夠做到這一點。此外,Perforce有一個配置文件,當你可以要求每個文件夾的不同給定版本和工具在團隊成員之間共享配置文件時。 –

回答

2

如果你要實現與git的,你可以使用:

每個組件
  • 一個submodule每次你想推薦SHA1
    • 一個倉庫,在父回購聲明。
      父回購包括您需要工作的所有子模塊,但它以精確的sha1(等同於推薦的基準)引用它們。

    參見:

  • +0

    我會爲每個組件使用一個存儲庫並編寫一個自定義工具來爲給定項目設置每個組件的正確版本的開發系統。我曾經在RCS之上使用過這樣的系統,並且支持由大約300個組件構成的許多不同產品,這些組件是相互獨立版本的。 –

    +0

    @VonC謝謝,我不知道git的submodules。我會做一些試驗,如果它有效,我會標記爲答案。 – Patrick

    +0

    @帕特里克好吧。我已經添加了幾個鏈接到我的答案,供您審閱。 – VonC