2010-02-19 102 views
0

我試圖添加類似:SVN的外部到子目錄僅保持葉目錄在SVN

subdir 
    modules 
    module1ext 
    module2ext 
    module3NOText 
    other dir not from externals 

其中子目錄/模塊/模塊{1,2} EXT在外部對象定義具體地,但not/subdir和/modules.This基本上增加了模塊{1,2} ext到svn倉庫,但不是subdir和模塊。

所以,現在我想在subdir(其他dir不是來自外部)或模塊(module3NOText)下添加一個目錄,我不能,因爲父目錄不在svn下。我應該svn添加它們嗎?這不會弄亂外部定義嗎?

另外,假設我想修改module1ext。我正在考慮刪除外部定義,然後svn添加該目錄。從我的經驗來看,這是有效的,但是你能告訴我它是否有任何不利之處或者它應該完成嗎?

回答

1

你似乎在這裏混合了一些東西。

你的版本庫應該是這樣的:

trunk 
    subdir 
    modules ---------> property svn:externals with links to module1ext and module2ext 
     module3NOText 
    otherdirnotfromexternals 

當檢查出的樹幹,所有的文件夾(子目錄,模塊,module3NOTExt,otherdirnotfromexternals)是SVN版本控制之下。模塊應該包含兩個外部模塊(如果svn:externals屬性設置正確)。

因此,在subdir或模塊下添加一個目錄應該通過svn add來完成。

如果您想修改外部代碼,您可能還想跟上原始存儲庫中的可能更改。換句話說,你想創建一個分支。

  • 如果代碼是在同一個版本庫,你可以簡單地使用svn copy創建一個分支,並使用svn merge
  • 如果代碼是在另一個倉庫,你可以管理這個作爲vendor branch。簡而言之:您可以將代碼導入到您自己的存儲庫中,標記它以標記您開始的點,將其分支到您自己的項目並從那裏進行修改。要合併原始代碼中的更改,請在供應商分支中導入新版本,再次對其進行標記並將更改合併到項目分支中。
+0

實際上,這個想法是使用供應商分支到一個核心回購(技術上來說是一個分支,但我最近主要使用HM,所以...),然後通過svn:exports從該核心派生出多個回購。所有的合併都是在覈心層完成的,然後,svn:exports將傳播它們。核心和衍生回購之間的差異是附屬模塊。我發現svn:externals被視爲一個獨立的repo,導致它的subdirs不會自動添加,你真的需要svn add,然後你得到你提到的結構。謝謝。 – Neo 2010-02-22 15:28:45

+0

@Neo你能否詳細說明你的意思是「svn:外部被視爲一個獨立的repo,並且subdirs不會自動添加」?我不明白這個... – jeroenh 2010-02-22 17:43:01