2008-09-20 76 views
4

我們正在開始一個新的SOA項目,其中包含許多共享的.net程序集。這些程序集的代碼將存儲在SVN中。在SVN中組織共享.net程序集的最佳方式是什麼?

在開發階段,我們希望能夠將這些程序集編碼爲儘可能少SVN「摩擦」的整個解決方案。

當項目進入更多維護模式時,程序集將保持在單獨的級別上。

沒有製作分支,標記和自動化構建維護噩夢,在SVN中組織這些庫的最佳方式是什麼,VS VS IDE也能很好地工作?

您是否在每個庫級別都設置了Trunk/Branches/Tags,並在編譯時以某種方式一起嘗試將它們全部意大利麪條一起粘貼在一起呢,還是更好地將它全部保存爲一個代碼複製到這裏和那裏以簡化代碼的大項目?有沒有使用externs的解決方案?

回答

6

我們在我們公司做的是建立一個工具存儲庫,然後項目存儲庫。該工具庫是Subversion版本庫,安排如下:

/svn/tools/ 
    vendor1/ 
    too11/ 
     1.0/ 
     1.1/ 
     latest = a copy of vendor1/tool1/1.1 
    tool2/ 
     1.0/ 
     1.5/ 
     latest = a copy of vendor1/tool2/1.5 
    vendor2/ 
    foo/ 
     1.0.0/ 
     1.1.0/ 
     1.2.0/ 
     latest = a copy of vendor2/foo/1.2.0 

每次我們得到供應商的工具的新版本,它是根據其供應商,名稱添加和版本號,以及'最新'標籤已更新。

[說明:這不是一個典型的源代碼庫 - 它的目的是存儲特定版本的'已安裝'圖像。因此/svn/tools/nunit/nunit2/2.4將是包含將NUnit 2.4安裝到目錄並將其導入工具存儲庫的結果的目錄樹頂部。可能存在源代碼和示例,但主要關注的是使用該工具所必需的可執行文件和庫。如果我們需要修改供應商工具,我們會在單獨的存儲庫中執行此操作,並將結果發佈到此存儲庫。 ]

其中一個供應商是我公司,並有每個工具,組裝,無論我們在內部發佈一個單獨的部分。


項目庫是一個標準的Subversion版本庫,與樹幹,標籤,樹枝和你通常的預期。任何給定的項目將是這樣的:

/svn/ 
    branches/ 
    tags/ 
    trunk/ 
    foo/ 
     source/ 
     tools/ 
     publish/ 
     foo-build.xml (for NAnt) 
     foo.build (for MSBuild) 

的工具目錄下有一個顛覆的svn:externals的屬性集,在相應的版本鏈接的每個工具或組裝的(或者是特定的版本或「最新」),其該項目需要。當'foo'項目由CruiseControl構建時。NET,發佈任務將填充「發佈」目錄作爲「富」組件預定部署,然後執行以下顛覆命令:

svn import publish /svn/tools/vendor2/foo/1.2.3 
svn delete /svn/tools/vendor2/foo/latest 
svn copy /svn/tools/vendor2/foo/1.2.3 /svn/tools/vendor2/foo/latest 

開發人員在他們的項目中正常工作,並讓構建自動化負責細節。正常的顛覆更新將拉動最新版本的外部工具以及項目更新。

如果你有很多工具相互依賴性,你可以配置CruiseControl.NET(手工)來觸發它們的依賴關係發生變化時從屬項目的構建,但我們並不需要那麼做。

注意:爲清晰起見,所有Subversion存儲庫路徑都縮短了。我們實際上使用Apache + SVN和兩個獨立的服務器,但是您應該按照您認爲合適的方式進行調整。

+0

這看起來像一個非常好,乾淨的方式 - 從我+1 +1 – 2008-09-20 13:35:43

0

我們在開發階段(包含這些負載的項目)中對共享程序集所做的工作是,我們將它們放在網絡共享(N Drive)類型的地方,並且每個開發人員都從那裏引用它們。

我們的構建過程將始終使用最新版本更新此份額。這樣,實際的程序集永遠不需要保存在源代碼管理中。只有代碼。

+0

感謝您的快速響應,但我指的是存儲項目程序集。我清理了一下這個問題。所以,如果我有一個改變Assembly1和Assembly2源代碼的TierA解決方案,並且我有改變Assembly2和Assembly3源代碼的TierB解決方案,那麼組織SVN的好方法是什麼? – JKueck 2008-09-20 06:18:05

相關問題