2011-09-01 119 views
0

如何保持多個相關在SVN存儲庫(或多個存儲庫)中組織的Visual Studio解決方案/項目?svn組織解決方案

例如我有兩個應用程序(解決方案),它具有一些共同項目:

+ Application_1 
    - Company.Core 
    - Company.Connections 
    - Company.Data 
    - Company.A1.DAL 
    - Company.A1.BL 
    - Company.A1.UX 

+ Application_2 
    - Company.Core 
    - Company.Connections 
    - Company.Data 
    - Company.A2.DAL 
    - Company.A2.BL 
    - Company.A2.UX 

右不是,既Application_1和Application_2共享相同SVN根,因爲它們使用的共同項目:

/svnroot 
    /common 
     /trunk 
     /Company.Core 
     /Company.Connections 
     /Company.Data 
    /app1 
     /trunk 
     /A1.DAL 
     /A1... 
    /app2 
     /trunk 
     /A2.DAL 
     /A2... 

原因因爲這確保了任何版本都具有來自公共文件夾的最新可用裝配體,並且每臺機器上的簽出總是一致的。

所以想什麼,我知道的是:

  • 如果每個解決方案實際上有自己的倉庫?
  • 如果是,我該如何分享常見項目並確保它們是最新的?
  • 是否將常用程序集作爲已構建的依賴項(.dlls)添加並分別提交給每個解決方案資源庫?我如何自動執行此類構建?

回答

2

您如何設置存儲庫完全取決於您,以及它如何適用於您的組織。我已經看到了幾種方法,並且多年來沒有發現可靠的建議。

編輯

這最後一部分寫得很厲害。我的意思是「沒有可靠的建議」是,沒有任何建議說「你應該把你的知識庫結構如下......」所有的建議都表達爲「這對我們很有用」,以及其中的每一種佈置回購確實對於他們,並且佈局有所不同。所以我的意思是「沒有適用於每個組織的可靠建議」。

年底編輯

但是,你的資料庫的結構非常接近我們如何。我們有數百個項目,以及幾個根節點。所有這些都在同一個存儲庫中。

和你一樣,我們有一個公共目錄,其中包含常用功能的項目,我們將其作爲參考添加到其他節點的解決方案中。這是我們在試驗和錯誤過程中進行了許多重組後得出的結果,這對我們來說很有用,所以我會給你一個關於你的結構的大拇指。

要回答你的特定點

  • 我想你應該有一個與你所描述脫落主幹結構中的一個倉庫。
  • 這使您可以在一次結帳中獲取代碼,確保一切都易於維護並保持最新狀態。因爲一切都在同一個回購中,所以只需添加您的參考。
  • 最後,我們的一般經驗法則是,在必要時總是將您的項目引用添加到項目中,並且不要檢查二進制文件除了需要常用dll的位置以及沒有源文件(例如第三部分零件)。例如,我們的Microsoft.AntiXss dll和Idunno.Anti-Csrf dll位於我們的「common」文件夾中的「共享dll」中。

作爲一個方面說明,這個結構還導致了建立一個構建服務器的簡單時間。當我們完成了CruiseControl.NET構建服務器的設置後,我們可以通過指向.sln文件來完成一切工作,就像我們在Visual Studio中一樣。把它放在一個回購站中,並遵循我剛剛制定的指導方針,使得建立我們的版本變得非常容易。

+0

非常感謝,我認爲我們做的很糟糕,但所有這些都是有效的。我不想檢查二進制文件,如果我將我們的回購文件分成多個回購文件,這可能是必要的。 – dilbert