2009-11-19 108 views
6

我準備建立一個SVN倉庫,並想知道是否有人有一個很好的回購結構的例子。我目前想:SVN存儲庫結構

發展
..應用
....應用1
......軀幹
......分行
......標籤
..數據庫
..第三方

雖然這種結構很可能保持我們需要的一切,我想作它有點顆粒化。有什麼想法嗎?

+0

你說的「多一點顆粒」是什麼意思? – 2009-11-19 23:18:33

+0

顆粒狀 - 變得顆粒狀或顆粒狀。免費在線詞典。我認爲他的意思是他希望進一步完善這一結構。 – mauris 2009-11-19 23:20:43

+0

如果不知道他/她創建回購的系統需求,我們無法真正幫助。 – 2009-11-19 23:21:17

回答

12

我們從一個類似的模型開始,但發現它有點麻煩。主要的問題是,如果你想在一個版本中分支你的代碼庫,你必須爲每個組件分支。

取而代之的是,我們已經考慮像下面這樣的方案:

trunk 
    app1 
    app2 
    lib1 
    lib2 
    branches 
    rc-2.0 
     app1, app2, lib1, lib2... 
    some-devs-branch 
     app1, lib2 
    tags 
    release-1.0 
     app1, app2, lib1, lib2... 

我喜歡有一個單獨的回購完全由第三方的東西。除非您計劃執行red bean book中的完整vendor-branching strategy,否則這將運行良好。

0

SVN提供標籤以在特定時間(您可以用於版本等)在源樹中「拍攝快照」。

但是,如果您打算讓您的存儲庫更「粒化」,也許您應該考慮設置多個存儲庫。

當然,在'trunk'文件夾中,如果你沒有使用源代碼控制,你應該設置任何正常的目錄層次結構。

2

我們也一直在努力。

我們發現它不需要很長時間,直到某些共享庫是多個應用程序的一部分,並且您希望在同一版本上擁有所有內容。因此,我們決定將我們所做的一切都放在一個單一的替代品中。我們已經以這種方式工作了2年多,並發現與它合作非常好。

所有的配置都有pro和con的配置,但是通過擁有1個完整的存儲庫,您可以(幾乎)確定所有文件都以正確的版本組合在一起。如果你使用多個主幹,那麼虛擬文件夾或鏈接(我已經忘記了這個術語)會讓它與對方鏈接,但回到你所在的位置非常困難。

只記得每個配置都有pro和con的,但對於一個不大的公司,我建議把所有東西放在一個父文件夾的單個回購中。

1

我目前的做法是將邏輯應用程序邊界上的系統全部置於一個存儲庫下。

例如,假設也有一個測試套件服務和數據庫

/project1/application1/ 
         trunk/ 
          Src 
          Test 
          Database 
         tags/ 
         branches/ 
     application2/ 
         trunk/ 
          Src 
          Test 
         tags/ 
         branches/      

這讓我們有一個項目assoicated多個應用程序,但手柄釋放控制每個「邏輯」的應用邊界。考慮你的版本控制需要在哪裏/什麼,並將它們設置爲分支/標記/中繼結構的位置。

我不喜歡整個存儲庫根目錄下的單個trunk/branches/tags文件夾,因爲我不希望檢出整個主幹,也不想將部分分支簽出混淆爲結果。 (你可能會不同意,你的里程可能會有所不同,等等)

0

我們總是爲每個單獨的「解決方案」創建一個單獨的SVN存儲庫。這個存儲庫只有一個簡單的主幹,分支和標籤結構。

任何依賴框架(我們控制源代碼)都有自己的獨立存儲庫。然後,我們通常會將二進制文件(特定版本)包含到使用它們的任何項目中。

0

對於一切都有一個單一的回購意味着你有一個非常好的機會以極快的速度結束一個巨大的倉庫。這意味着事情會變得緩慢並且難以跟蹤。顯然,這取決於你的確切用例,但是我個人會選擇每個項目的存儲庫,並在需要時使用svn:externals。

事實上,我會選擇超過SVN如果可能的話一個分佈式VCS,但每一個他自己......