2010-02-04 103 views
1

我目前正在處理一組項目,這些項目都是他們自己的通用核心項目的特定分支/擴展,我正在尋找一種方法來管理項目協作的方式。版本控制擴展單個項目的多個項目

我明白以下是有點含糊,我只有一點經驗的版本控制超出了單個項目的基本需求。我在尋找的是如果有人曾經遇到過這樣的事情,如果是的話,他們是如何解決它的? (即使用了哪些技術/功能,或者僅僅是創建良好實踐的問題?)

我處於被允許完全廢除SVN並移動到其他更合適的地方的幸運位置。

我們有

  • 接收更新的核心顛覆源樹(通用樹)。
  • 許多域特定的Subversion源代碼樹將使用文件,修改現有文件並將新文件添加到核心源代碼樹以生成最終產品。

我們的流程

  • 變化的核心源代碼樹手動納入特定領域的樹木
  • 偶爾改變在特定領域的樹木被視爲「通用」 /不夠好,是併入核心樹(並最終結合所有其他域特定樹)

我們想是一種技術(或技術),可以

  • 允許每個域特定樹建立針對核心樹的特定版本(即構建過程會抓住特定的核心版本,然後應用的所有領域對其進行特定的更改以生成最終產品)
  • 允許每個域特定的樹改變核心的特定修訂版以構建反對(這可能會引入構建錯誤,但只要改變的過程相對簡單並易於使用)。
  • 提供特定於域的樹的方法,以便將更改貢獻回核心存儲庫。
  • 由於通用核心樹是開源的,但特定於域的樹不是,所以我們需要在最終解決方案的某些部分放置某種形式的訪問控制。

在此先感謝您的幫助。

回答

1

我會把它們當作你版本控制系統中的獨立項目。

然後使用像Ant這樣的構建系統構建特定於域的項目。讓構建腳本導出核心項目的特定修訂或標記,並將其放入特定於域的項目的目錄中。 (該目錄應該從版本控制中排除。)

或者您可以使用svn:externals,以便SVN在您簽出特定於域的項目時自動檢出核心項目的版本。

+0

我最初考慮使用svn:externals,但我想不出一個好方法來處理修改核心項目文件的域特定項目。 例如,如果用戶修改了核心項目源文件以獲取其特定於域的工作副本(以添加一些錯誤的特性),那麼當源文件來自外部核心項目源時,這些更改如何保持在特定於域的特定樹上文件? – 2010-02-04 06:04:01

+0

我不完全確定你的意思,關於修改核心項目的域特定項目。如果你需要不同版本的核心項目,那麼你將不得不處理分支,並保持分支同步等。如果你可以避免這種情況,可能會更容易,也許通過讓DS項目擴展類從核心項目而不是取代它們。 – 2010-02-04 15:59:08

+0

或者如果它們是易於自動化的更改,則可以使用上面的Ant方法。您將擁有核心項目的導出副本,因此Ant腳本可能會更改其某些文件,而您只是不會提交這些更改。 – 2010-02-04 16:01:02