2011-02-07 107 views
2

我們在這裏有一個項目,它被分成兩部分。一個用於內部和一個用於外部。SVN Shared Checkout文件夾

兩個版本之間的區別是單個xml文件和幾個css文件。

有一堆運行應用程序的共享代碼。共享代碼還包含與上述相同的文件夾中存在的css文件。

所以我可能會說兩個css文件叫common.css和site.css。 Common.css是一個共享的css文件,site.css在這兩個版本中有所不同。

我不想爲每個版本創建一個SVN回購,因爲兩者之間的差異僅僅是幾個文件。

所以理想情況下,我希望在SVN中包含「常用」代碼的文件夾,然後是包含每個版本的特定文件的文件夾。

有誰知道我可以在SVN中做到這一點,這樣我就可以檢出常用文件夾和版本文件夾?

回答

3

使用共享代碼創建公共存儲庫,然後創建兩個SVN分支,其中存放特定文件。

當然,不要將這些分支的特定文件合併到公共存儲庫。

在客戶端,使用svn switch來處理相關部分。您也可以只切換包含特定文件的特定文件夾,以允許您同時處理常見的回購和特定的分支(不需要將分支中的通用代碼合併到幹線)。

mkdir myproject/common/ 
vim myproject/common/common_file.html 
mkdir myproject/common/css 
svn import myproject svn://here/myproject 

mkdir myproject/external myproject/internal 
svn add myproject/external myproject/internal 
svn copy myproject/common/css myproject/external/ 
svn copy myproject/common/css myproject/internal/ 
svn ci -m "Created external & internal css sub-branches" 

mv external.css specific.css files.css myproject/external/css/ 
mv internal.css specific.css files.css myproject/internal/css/ 
svn add myproject/external/css 
svn add myproject/internal/css 
svn ci myproject/external/css myproject/internal/css -m "Added external & internal specific files" 

別的地方,以便對內部項目工作,例如:

svn checkout svn://here/myproject/common/ . 
svn switch ./css svn://here/myproject/internal/css 
vim ./common_file.html 
svn ci -m"I'm an internal user and I worked on a common file" 
vim ./css/files.css 
svn ci -m"I worked on the specific file files.css of the internal branch" 
+0

不知道我是否做得對。我有一個名爲css的文件夾,我創建了一個名爲common的分支,並將pommon css放入其中。然後我創建了另外兩個分支,它們都包含一個名爲css的文件夾,並將版本css文件放入其中。但我不能檢查出版本的css文件夾,因爲svn不允許它。我懷疑這不是你要求我做的對嗎? – griegs 2011-02-07 02:11:43

1

,當svn:externals屬性將是有益的這裏,如果我理解你想要做什麼。

我經常使用它來管理幾個共享代碼的公共子集的應用程序。

將通用代碼放在自己的目錄中,然後將xml和css文件的每個版本(internal amnd external)放在單獨的目錄中。

爲每個xml和css目錄添加一個指向公共目錄的svn:externals屬性。然後,當您簽出任一目錄時,您會在樹中獲得公共代碼目錄的副本。更改後的代碼也可以提交回存儲庫。