每次提交到’trunk’后,我们会自动对trunk进行一系列测试.当这些测试通过时,我想将自动合并到名为“tests-passed”的分支中.当测试失败时,不会发生合并,但是一旦在下一次或稍后提交的“
关键是要有一个与trunk相同内容的分支,但这比’trunk’更加理智,因为至少自动化测试已经过去了.
我有一个尝试手动执行此操作的脚本,但这是一个使用自定义属性的黑客,并不总是正常工作 – 正如我刚刚发现的那样.我如何才能最好地让Subversion做到这一点?
只要您确定了新的主干版本< somerev>,就会在测试的工作副本的根目录下运行这些命令.已通过测试:svn update svn merge http://example.com/svn/myproject/trunk -r 0:<somerev> svn commit -m "merged trunk revisions up to <somerev> into tests-passed"
无论何时使用merge命令,SVN都会在svn:mergeinfo属性中记录合并.因此,上面的命令应该自动确定范围0中的哪些修订:< somerev>有资格合并,不包括已经完成的任何合并.
就像你在评论中说的那样,预计不会发生冲突.但有时我看到在合并包含重命名的一系列SVN修订版时,无论如何都会发生意外冲突.要消除这些冲突,可以使用–accept theirs-full选项和merge命令始终接受trunk状态.