Subversion:如何查找未合并到trunk的所有修订版?

Dan*_*kas 55 svn merge branch

发布周期的分支源是常见的源管理方案之一.尽快合并是一种很好的做法.因此,我们有一个人为因素:分支已关闭,但有人忘记将某些内容合并回主干.

问:是否有"一键"方式来获取未从分支X合并到主干的所有修订号?

(注意:我不需要这些修订号来找到要合并的内容,我需要它们来创建自动验证,这会提醒人们确保他们不会忘记将某些内容合并到主干.合并本身不是问题.)

似乎svn mergeinfo命令在这里没有帮助.如果不在根级别执行合并,则传递分支和主干根将失败(这是常见的情况).

脚本,工具任何类型的svn钩子作为解决方案是受欢迎的.

PS

最新版本的SVN.无需争论这种情况有多普遍或好;)

tmo*_*ont 69

如果您使用mergeinfo子命令使用相对较新版本的Subversion(我认为为1.5或更高版本),则可以非常轻松地完成此操作.

svn mergeinfo --show-revs eligible svn://repo/branches/your-branch-name svn://repo/trunk
Run Code Online (Sandbox Code Playgroud)

这将显示所有有资格从分支"your-branch-name"合并到主干的修订版.

来源:http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.mergeinfo.html

  • "这是一个常见的场景" - >在不同级别合并/分支是一个常见的错误!总是在你的分支开始的那个级别合并.总是. (7认同)
  • svn mergeinfo命令有一个`-R`(递归)选项(至少在当前版本中),这应该包括执行较低的合并.我们尝试始终在顶层合并(提交可以在较低级别执行,或者仅包括某个目录中的文件,但总是在顶部合并)所以我还没有真正测试过它. (3认同)

Nat*_*idd 7

简短的回答:我不这么认为.

答案很长:我最后写了一个python脚本来回答这个问题.每当开发人员合并变更集时,他们都需要在日志消息中放入"合并的rXXX".(这与以前的svn:合并信息存在)的脚本解析所有活SVN分支+干线和递归扫描所有"合并"链接,输出他们没有合并的更改的每个开发者邮件列表.

[更新] @tmont的答案现在更好了,因为每个人都有一个svn版本支持,svn mergeinfo --show-revs eligible并且svn merge --record-only当你想要仅记录逻辑修复时.