当我在主干的一个修订版上创建一个分支时,我得到的分支没有任何mergeinfo集,所以据我所知,不可能弄清楚这个分支来自哪个修订版。
我有一些脚本,它们应该在以后自动生成针对主干的差异,但我没有我需要的修订号。如果我再次与main合并,我会设置merginfo,这样脚本就可以把它拉出来了。
我也能做到
svn merge --record-only svn+ssh://{url}/main@{revision}这将设置版本。但它速度很慢,需要检查源代码并提交更改。
我还可以更改脚本,以仅根据分支中的更改生成diff,除非有mergeinfo,然后回退到对主干的差异,但特殊情况会使这变得非常复杂。
有没有更简单的方法?
澄清:在做了更多的subversion研究之后,我阅读了this。我需要的是一种编程方式来访问隐式的mergeinfo,因为当您通过copy创建分支时,您不会获得显式的mergeinfo属性。
implicit属性实际上是/TRUNK:1-BRANCHPOINT,表示分支包含BRANCHPOINT之前的所有修订。我要找的是分支生成后的BRANCHPOINT。
发布于 2009-11-24 19:17:06
从这个问题上看,我不能完全确定您想要生成哪些差异。但是,您始终可以通过使用以下命令来获取分支的修订版本:
svn log -v --stop-on-copy -r 1:HEAD -l 1 svn+ssh://{url}/branch这会将最旧的修订排在第一位,不会返回到该分支的复制操作之外,并将其限制为1个修订(复制操作本身)。
然而,svn mergeinfo考虑了分支操作,并认为它们已经合并(我认为它曾经没有这样做,这很烦人,但它已经修复了一段时间),所以使用mergeinfo来查看在任何一个方向上需要合并的内容都会显示出一些合理的东西。
https://stackoverflow.com/questions/1787501
复制相似问题