Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
svn合并信息-E195016:“;必须与祖先有血缘关系”;_Svn_Svn Merge_Svn Mergeinfo - Fatal编程技术网

svn合并信息-E195016:“;必须与祖先有血缘关系”;

svn合并信息-E195016:“;必须与祖先有血缘关系”;,svn,svn-merge,svn-mergeinfo,Svn,Svn Merge,Svn Mergeinfo,虽然这里(例如)和网上有几个类似的问题,但我无法理解为什么svn mergeinfo会在我所有的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 o

虽然这里(例如)和网上有几个类似的问题,但我无法理解为什么
svn mergeinfo
会在我所有的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成功返回


有人知道我如何修复我们的文件,使其与所在的项目再次“祖先相关”吗?

简短回答:
svn mergeinfo
是错误的

从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
,以比较特定版本


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

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


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

在历史记录中很久以前,我看到了提交(使用
svn log--verbose--stop on copy
)有人通过删除目录
D/base/trunk/lib/plugin
并将其添加到另一个主干
a/tools/trunk/plugin(from/base/trunk/lib/plugin:16026)
来移动目录。这能解释我为什么会犯这些错误吗?@dokaspar我重读了你的问题,发现我误解了你的问题。改进了我的答案以正确解决您的问题。拜托,你能检查一下吗?所以再次归结为RTFM:)@dokaspar我不会那样说,但是是的:信息在手册中。我也误解了你的问题,在第一次尝试时给了你一个错误的答案。但很高兴它帮你解决了问题。