2017-08-10 54 views
2

尽管这里有几个类似的问题(例如,SVN - Reintegration Merge error: "must be ancestrally related")和Web上,但我无法弄清楚为什么svn mergeinfo <file>在我的所有SVN存储库中导致错误。与所有其他Q &正如我所发现的那样,我实际上能够成功执行svn merge。例如,撤销先前提交到pom.xml文件:svn mergeinfo - E195016:“必须是祖先相关的”

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/[email protected]' must be ancestrally related to 
'https://../trunk/[email protected]' 

在这个例子中,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 --recursivesvn propget svn:mergeinfo --depth=infinity命令不输出任何内容,与状态代码成功返回0

有没有人有一个想法,我怎么能解决我们的文件是“祖先相关的”再次它们位于项目?

回答

1

简答:svn mergeinfo <file>是错的。

从SVN文档(SVN帮助合并信息):

"Summarize the history of merging between SOURCE and TARGET."

"SOURCE and TARGET are the source and target branch URLs, respectively."

"The default TARGET is the current working directory ('.')."

所以,如果您的命令是像svn mergeinfo pom.xml,则如预期的错误消息,因为没有“祖先关系”文件之间它是目录。
正确的命令是:svn mergeinfo pom.xml pom.xml,这将比较这两个文件,并可能是你想要的。

当您运行svn mergeinfo .时,它与运行svn mergeinfo . .相同。所以它的工作,你得到mergeinfo输出。

您也可以运行svn mergeinfo pom.xml [email protected]来比较特定的版本。


尝试合并不相关的事情时,也可能会出现此错误。
如果您手动创建目录树或文件(我的意思是:不使用分支功能),那么它们不相关,您将得到此错误。

请阅读this question并注意作者手动创建了分支dev,打破了SVN。

在这种情况下,最佳解决方案是正常创建分支,手动将所有文件迁移到此分支(复制粘贴所有内容),然后将其合并回主干。

+0

远在历史中,我看到一个提交(带有'svn log --verbose --stop-on-copy'),其中有人通过删除它来移动目录'D/base/trunk/lib/plugin'并添加它进入另一个主干'A/tools/trunk/plugin(从/ base/trunk/lib/plugin:16026)'。这是否会解释我为什么会遇到这些错误? – dokaspar

+1

@dokaspar我重读你的问题,并注意到我误解了你的问题。改进我的答案,正确解决您的问题。请,你能检查它吗? – MiguelKVidal

+0

所以再次归结为RTFM :) – dokaspar

相关问题