2014-01-17 52 views
0

我的團隊維護我們的PHP源代碼的一個多項目subversion存儲庫。 我們有一個簡單的部署策略,其中應用程序使用的庫存儲在其目錄結構中。這可以通過使用tarball或通過檢查代碼中的代碼來實現部署。 這一切都很好,但在過去的管理員角色中,我告訴svn用戶不要創建嵌套工作副本或重新安排代碼樹,特別是在引導主幹分支頭部的工作副本中。在同一個Subversion版本庫的工作副本中使用嵌套的svn工作副本的最佳方式是什麼?

我們有一個更復雜的倉庫,但重要的部分是這樣的:

trunk/app4/libs/libB 
trunk/lib1 

LibB包括來說明一些庫存儲與在那裏它們被部署,但積極開發應用程序之間共享庫存儲的應用在水平,我們認爲在repository.If一個項目,我們要按照工作副本相同的結構,我們在資源庫中的文件樹應該是這樣的:

parent_dir/ 
    app4/libs/libB 
    lib1/ 

但是對於我們delpoyment我們需要打架代碼樹如下:

app4/ 
    libs/ 
    lib1 
    libB 

我已經使用以下步驟來設置它。
#SVN共同的svn://svn.example.com/trunk/app4 ./ #CD APP4 /庫 #SVN共ssvn://svn.example.com/trunk/lib1

結果是lib1目錄未包含在工作副本的app1部分中,使得app1的狀態不清晰,而是它自己的工作副本的根。這使得app1工作副本的svn狀態不清晰,因爲目錄lib1是app4工作副本中的新文件。

#SVN狀態

回報

? lib1 

這是個好主意,加入我的SVN APP1添加LIB1目錄/庫清除呢?有人可能希望這會將p1/libs/lib1目錄添加到app1的svn信息中,而不會對app1/libs/lib1/.svn /做任何更改,但我認爲這不太可能。 (TODO:在一個例子中測試)

最好只是親自忽略該狀態,或者可能添加libs/lib1忽略以獲得乾淨的狀態?還有什麼其他的選擇?

回答

0

正確的解決方案是創建這樣的2個工作拷貝。

app4_prj/ 
    app4/ 
     libs/ 
     lib1 

lib1_prj 
    app4/ 
    libs/ 
     lib1 

在這兩種:

# cd app4/libs 
# svn ignore lib1 

制定了各自項目LIB1和APP4。當每個項目檢查的工作副本有一個乾淨的狀態,LIB1不SVN複製,你可以更容易地與LIB測試和修補匠,包括來自其他團隊成員的變化而不斷髮展的應用程序,這樣,

0

只能使用工作副本(關於lib1),您無法更改回購節點的裝入點。 新的存儲庫(帶的外部)必須創建和使用

+0

因爲它的成立工作拷貝工作。我不主張這樣做,但它只是罰款。此外它的優良有一個資料庫,並在不同的目錄管理項目。這似乎是一個多回答評論的。 –

相關問題