尽管这里有几个类似的问题(例如,SVN - Reintegration Merge error: "must be ancestrally related")和网络上的问题,但我无法弄清楚为什么svn mergeinfo <file>会在我的所有SVN存储库中造成错误。与我所发现的所有其他问题相反,我实际上能够成功地执行svn merge。例如,撤消对pom.xml文件的前一次提交:
svn merge -r 17409:17408 pom.xml
--- Reverse-merging r17409 into 'pom.xml':
U pom.xml
--- Recording mergeinfo for reverse merge of r17409 into 'pom.xml':
U pom.xml
--- Eliding mergeinfo from 'pom.xml':
U pom.xml但是,当我执行svn mergeinfo时,会得到以下错误:
svn: E195016: 'https://../trunk/MyProject/pom.xml@50446' must be ancestrally related to
'https://../trunk/MyProject@50446'在本例中,50446是当前的头修订号,对于我尝试过的每个文件,我都会得到相同的错误。只有当我在顶层目录本身上执行mergeinfo命令时,它才能工作:
svn mergeinfo .
youngest common ancestor
| last full merge
| | tip of branch
| | | repository path
50446 50446
| |
-------| |------------ ../trunk/MyProject
\
\
--| |------------ ../trunk/MyProject
|
50446 更奇怪的是,我没有找到任何mergeinfo属性集。像svn propget svn:mergeinfo --recursive或svn propget svn:mergeinfo --depth=infinity这样的命令不会输出任何内容,并且使用状态代码0成功返回。
有没有人知道我如何将我们的文件修复成与他们所在的项目“祖先相关”?
发布于 2017-10-03 18:42:35
简短的回答:svn mergeinfo <file>错了。
来自SVN文档(svn帮助合并信息):
“总结源与目标融合的历史。” “源和目标分别是源和目标分支URL。” “默认目标是当前工作目录(‘.’)。”
因此,如果您的命令类似于svn mergeinfo pom.xml,那么错误消息将如预期的那样,因为该文件和它的目录之间没有“祖先关系”。
正确的命令是:svn mergeinfo pom.xml pom.xml,这将比较这两个文件,可能是您想要的。
运行svn mergeinfo .时,这与运行svn mergeinfo . .是一样的。所以它起作用了,你得到了mergeinfo输出。
您还可以运行svn mergeinfo pom.xml pom.xml@12345,以比较特定的修订版。
在尝试合并不相关的事物时,也可以得到此错误。
如果您手动创建目录树(我的意思是:不使用分支功能),那么它们是不相关的,您将得到这个错误。
请阅读this question,并注意作者手动创建了分支dev,从而破坏了SVN。
在这种情况下,最好的解决方案是正常创建分支,手动将所有文件迁移到这个分支(复制粘贴所有文件),然后将其合并回主干。
https://stackoverflow.com/questions/45623895
复制相似问题