我正在寻找一个支持“插件”的SVN项目,我想在其中分叉一个与项目一起打包的插件。如何仅在svn树中分叉该子目录?如果可能的话,我希望能够在以后的更改中合并到上游。 (我猜这可能是绝对不可能的,没有意义。)获取历史记录会很好,但可以选择。
特别是我对管理hg存储库感觉最舒服,尽管我也使用过bzr,git和darcs。
答案 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 ...
。