SVN - 重新整合合并错误:“必须与祖先相关”

时间:2009-01-29 01:24:41

标签: svn tortoisesvn

使用TortoiseSVN - 当我使用Test Merge时,我收到错误“http://mysvnserver/svn/main/branches/ProjectA必须与http://mysvnserver/svn/main/trunk/ProjectB祖先相关”

我该怎么做才能解决这个问题?

9 个答案:

答案 0 :(得分:69)

我刚刚遇到了类似的问题,想要添加我遇到的问题和解决方案。分支是由树干的SUBFOLDER而不是整棵树制成的。因此,当我试图重新融入时,我的等级制度不匹配。只需将整合重建为我的主干WD的正确子文件夹,就可以继续进行。

希望这可能有助于打击此Q / A的人。 :)

答案 1 :(得分:17)

让我猜一下:这些项目没有关系?查看历史,如果其中一个曾经分支过。

立即解决方案:每手合并或尝试命令行“svn merge --ignore-ancestry”

答案 2 :(得分:8)

提到davebytes时,将trunk\X分支到branches\Y,然后将X移动到新文件夹Z,即{{}}时,就会出现此问题{1}}。

如果您只是尝试将trunk\X\Z上的更改合并到branches\Y,则会遇到很多冲突;如果您只是尝试将trunk\X合并到branches\Y,则会出现“祖先相关”错误。

但是,the SVN manual describes the underlying problemtrunk\X\Z应该被称为svn merge。您应该尝试在此方案中描述的是,您试图总结从svn diff-and-apply的r100到r200发生的更改,并将这些更改应用于branches\Y

在TortoiseSVN中,这是将两个不同的树场景合并到trunk\X\Z\的本地工作副本,其中trunk\X\Z的r100设置为“来自”,且r200为branches\Y设置为“to”。

答案 3 :(得分:5)

由于以下原因,我们遇到了这个问题:

使用TortoiseSVN的repo浏览器创建了一个文件夹,并将其用作分支。之后我们尝试将手动创建的文件夹合并到工作文件夹中。

解决方案是:首先不要手动创建分支,而是使用TortoiseSVN - >分支/标签...选项以创建分支。

希望这会有所帮助。

答案 4 :(得分:2)

起初我尝试合并根文件夹并得到错误,然后浏览到我要合并的特定文件夹,然后选择要合并的正确文件夹。

实施例,

在我的分支机构中,我有项目结构:

 -Root    
    - Code
    - DB

我创建了一个标签并更改为标签的DB文件夹。现在我想将标签的更改带到分支。所以,我切换到我的分支并尝试合并并得到错误“必须与祖先相关”。

所以解决方案是,

I browsed to "DB" folder in branch, right click and select Tortoise SVN->Merge-> Merge a range of revisions -> 

现在,从要合并的URL,我选择了:

the "DB" folder from my tag.
Then, "test branch". Everything worked fine :D

所以,然后我点击了“合并”按钮。

答案 5 :(得分:1)

如果您的文件名称与其中一个分支(或主干)完全相同,则可能会发生此错误:

# svn switch ^/trunk
Updated to revision 123.
# ls
file1
file2
v1
# svn merge --reintegrate ^/branches/v1
svn: E195016: ^/branches/v1@123 must be ancestrally related to ^/trunk/v1@123

要解决此问题,请在命令中添加当前目录(注意点):

# svn merge --reintegrate ^/branches/v1 .

这是一个真实的例子,它耗费了我几个非常不愉快的时间。 :(

答案 6 :(得分:0)

我正在与另一个项目合并。造成这个问题。我合并了正确的分支然后它工作正常。我的坏,阅读障碍

答案 7 :(得分:0)

我遇到了同样的错误,原因是关于权限。

问题是因为一个开发人员试图将更改从一个具有读/写访问权限的分支集成到另一个具有读/写访问权限的分支,但最后一个是从另一个分支创建的分支,他只是具有读访问权限

这是具有权限的结构(r = read,w = write):

主干(r) 发展(r) 质量保证(rw) 分支机构    featureBranch1(rw)

在这种情况下,开发已经从trunk创建,QA来自develop,featureBranch1来自develop。事实上,他尝试将featureBranch1重新集成到QA中,这是一个从开发创建的分支,而且他没有写入开发权限,这就是为什么他在尝试在QA中重新集成featureBranch1时收到此消息的问题。

在给他开发写入后立即消息消失。

答案 8 :(得分:0)

我遇到了同样的问题。我通过正确的cd修复它,我合并了。我在路径目录中合并项目而不是路径目录中的trunk(谁是实际的祖先)。