在跟踪上游时,如何只对svn存储库的一部分进行分支?

时间:2012-05-14 03:01:16

标签: svn branch

我正在寻找一个支持“插件”的SVN项目,我想在其中分叉一个与项目一起打包的插件。如何仅在svn树中分叉该子目录?如果可能的话,我希望能够在以后的更改中合并到上游。 (我猜这可能是绝对不可能的,没有意义。)获取历史记录会很好,但可以选择。

特别是我对管理hg存储库感觉最舒服,尽管我也使用过bzr,git和darcs。

1 个答案:

答案 0 :(得分: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等。)

如果您的存储库是以第一种方式组织的,或者甚至是第二种方式,但您的插件不是具有自己的主干/分支/标签的单独项目,则可以创建仅包含插件的分支:{{1 }}

然后,您必须注意从主干(或其他分支)到此分支仅合并对插件所做的更改(例如,不是svn copy --parents repo_root/trunk/[path_prefix]/plugin repo_root/branches/new_branch/[path_prefix]/plugin,而是svn merge repo_root/trunk ...)。

你不应该得到比平时更多的问题(例如完整的主干或分支)SVN分支和合并。

一个重要的注意事项:如果插件依赖于项目的其他部分(很可能是这种情况),在分支上进行开发时,必须维护一个混合的工作副本:检查主干,cd到插件目录,并运行svn merge repo_root/trunk/[path_prefix]/plugin ...