Subversion可以在没有mergeinfo的情况下记录合并吗?

时间:2016-06-06 18:51:08

标签: svn svn-merge

我在我们的一个存储库中搜索了一组特别粗略的旧版本,试图找出一些假设的合并发生了什么。

当我查看目标分支中的一个修订版时,它向我显示的内容与源分支上的修订版完全相同(相信我,我也检查了差异):

$ svn --log --verbose --use-merge-history --revision 100 ^/target
------------------------------------------------------------------------
r100 | <author> | <date> | 1 line
Changed paths:
   A /path/to/new/file
------------------------------------------------------------------------

但是,缺少了一些东西。在任何地方都没有记录mergeinfo属性更改,对吧?所以它不能合并,我最了解它。也许作者手编辑了这个文件?

我仔细检查了Subversion认为合格修订的内容:

$ svn mergeinfo --show-revs eligible ^/source ^/target | grep 100

什么也没有!尽管没有mergeinfo,Subversion认为修订已合并。

$ svn mergeinfo --show-revs merged ^/source ^/target | grep 100
r100

这可能吗?怎么样?

我在遗失的mergeinfo上阅读了CollabNet articleSvn Book section

  • 合并不相关的来源:事实并非如此,正如我所说,我可以在源分支中看到确切的内容/差异。
  • 从外国存储库合并:Ditto。
  • 使用--ignore-ancestry:这是可能的(我不知道作者调用了什么命令),但是该修订版是否会出现在符合合并条件的列表中?
  • 从目标的自然历史中应用反向合并:从历史中可以明显看出,这不是反向合并。

1 个答案:

答案 0 :(得分:2)

哎呀,据我所知,实际上 svn:mergeinfo属性。我不记得svn log是否打印了仅属性更改(必须),尝试运行svn log --verbose或针对svn propget svn:mergeinfo --verbose运行^/target

阅读SVNBook | Merges Without Mergeinfo

BTW,不要忘记在Subversion 1.5中引入了mergeinfo。因此,如果合并发生在较旧的Subversion版本中,则可能是svn:mergeinfo属性丢失的原因。

是的,提交作者出于无知可以手动编辑文件,使提交看起来像合并。