2012-05-14 45 views
0

我正在尋找一個帶有「插件」支持的SVN項目,在那裏我想要分發與項目一起打包的插件之一。如何在svn樹中僅分發該子目錄?如果可能,我希望能夠在以後的更改中將其合併。 (我猜這可能是如此無可救藥,以至於沒有意義)。獲得歷史將是很好的,但是可選的。如何在跟蹤上游的同時僅執行一部分svn存儲庫的分支?

特別是我對管理一個hg存儲庫感到非常滿意,儘管我也使用過bzr,git和darcs。

回答

1

主要有兩個SVN約定如何組織庫(請注意,這些只是慣例,它沒有做這種方式):

repo_root - 
    trunk - Project1 
     - Project2 
     ... 
    branches - 
     - branch1 
      - Project1 
      - Project2 
      ... 
     - branch2 
      - Project1 
      - Project2 
      ... 
     ...    
    tags - 
     - tag1 
      - Project1 
      - Project2 
      ... 
     - tag2 
      - Project1 
      - Project2 
      ... 
     ... 

或:

repo_root - 
    - Project1 
    - trunk - 
    - branches - 
     - branch1 - 
     ... 
    - tags - 
    ... 
    - Project2 
    ... 

如果您的存儲庫已經以第二種方式組織並且您的插件是一個單獨的項目 - 那麼您只需將其分支(svn copy repo_root/Project/trunk repo_root/Project/new_branch - 插入http,svn等)。

如果您的存儲庫以第一種方式組織,或者以第二種方式組織,但您的插件不是具有自己的trunk/branches/tags的單獨項目,則可以創建僅包含插件的分支:svn copy --parents repo_root/trunk/[path_prefix]/plugin repo_root/branches/new_branch/[path_prefix]/plugin

然後你必須小心地從中繼線(或其他分支)合併到這個分支,只需要對插件做的改變(例如不是svn merge repo_root/trunk ...,而是svn merge repo_root/trunk/[path_prefix]/plugin ...)。

與平時(例如完整的主幹或分支)SVN分支和合並相比,您不應該遇到更多問題。

一個重要的注意事項:如果插件依賴於項目的其他部分(這很可能是這種情況),在分支上開發時,必須保持混合工作副本:檢查樹幹,cd到插件目錄,並運行svn switch ^/branches/new_branch/[path_prefix]/plugin

相關問題