不存在祖先关系时,如何将Hot Fix从Tag合并到SVN中的Trunk?

时间:2018-08-03 03:17:52

标签: svn

我是SVN的新手,我当前的组织有以下流程

1)  Trunk (mainline code)
2)  Release-X.0 created from Trunk (for QA and other testing)
3)  Tag-X.0 created from Release-X.0 (to release to customers)

到目前为止,尚未对Tag完成修补程序。

以防万一,应该在'Tag-X.0'上执行热修复,如何将更改合并回'Trunk'?

如果我没有记错的话,'Tag-X.0'和'Trunk'根本不相关,或者不是从'Trunk'创建的'Tag-X.0'

请让我知道解决方法

1 个答案:

答案 0 :(得分:0)

如果我正确理解,您将提交对Tax-X.0的修复程序,并且需要将其合并到中继。在这种情况下,我会选择将修补程序修补到主干。
在行李箱结帐中:

svn merge -c [HOTFIX-REVISION] [Tag-X.0 URL]
svn commit -m "Merged hotfix from Tag-X.0"

应该这样做。

编辑:对于祖先,Tag-X.0和主干应该相关,因为Release-X.0是从主干创建的(我假设已复制),然后是Release-X.0的Tag-X.0,所以这种关系从Trunk到Tag-X.0应该存在。 如果不是这种情况,并且发布和标记将通过其他方式创建,并且svn merge -c不会做任何事情,那么您就需要忽略合并的祖先,即调用

svn merge -c [HOTFIX-REVISION] --ignore-ancestry [Tag-X.0 URL]

更多示例

因此,Tag-X.0的修补程序应该是

timom@dev-machine:~/svn/tagx0$ svn commit --message "Hot-fix for Tag-X.0"
Sending        services/foo/bar.cpp
Transmitting file data .
Committed revision 30816.
timom@dev-machine:~/svn/tagx0$

然后合并到主干

timom@dev-machine:~/svn/trunk$ svn merge -c 30816 ^/tags/X.0
--- Merging differences between repository URLs into '.':
U    services/foo/bar.cpp
--- Recording mergeinfo for merge between repository URLs into '.':
 U   .
 U   services
timom@dev-machine:~/svn/trunk$  svn commit -m "Merged hotfix from Tag-X.0"
Sending        services/foo/bar.cpp
Transmitting file data .
Committed revision 30817.
timom@dev-machine:~/svn/trunk$