我是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'
请让我知道解决方法
答案 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$