使用TortoiseSVN-使用测试合并时,出现错误“ http:// mysvnserver / svn / main / branches / ProjectA必须与http:// mysvnserver / svn / main / trunk / ProjectB祖先相关”
我该怎么解决?
使用TortoiseSVN-使用测试合并时,出现错误“ http:// mysvnserver / svn / main / branches / ProjectA必须与http:// mysvnserver / svn / main / trunk / ProjectB祖先相关”
我该怎么解决?
Answers:
我刚遇到一个类似的问题,想补充我遇到的问题和解决方案。分支是由树干的SUBFOLDER而不是整个树制成的。因此,当我尝试重新整合时,我的层次结构不匹配。只需将集成结构重组为我的后备箱WD的正确子文件夹,即可继续进行该过程。
希望这可以帮助达到此Q / A的人。:)
我猜:这些项目没有关系吗?查看历史记录,如果其中之一是否分支过。
即时解决方案:每手合并或尝试使用“ svn merge --ignore-ancestry”命令行
如davebytes所述,当您分支trunk\X
到branches\Y
,然后移到X
新文件夹时Z
,可能会发生此问题trunk\X\Z
。
如果您只是尝试将上的更改合并branches\Y
到trunk\X
,则会遇到很多冲突;如果您只是尝试合并branches\Y
到中trunk\X\Z
,则会出现“祖先相关”错误。
但是,SVN手册描述了潜在的问题:svn merge
应该真正调用svn diff-and-apply
。在这种情况下,您应该尝试描述的是,您要总结从r100到r200发生的更改branches\Y
,并将这些更改应用于trunk\X\Z\
。
在TortoiseSVN中,这是将两个不同的树方案合并到的本地工作副本中trunk\X\Z
,其中r100的branches\Y
设置为“ from”,r200的branches\Y
设置为“ to”。
由于以下原因,我们遇到了此问题:
使用TortoiseSVN的回购浏览器创建一个文件夹,并将其用作分支。之后,我们尝试将手动创建的文件夹合并到工作文件夹中。
解决方案是:不要首先手动创建分支,而要使用TortoiseSVN-> Branch / tag ...选项来创建分支。
希望这会有所帮助。
最初,我尝试在根文件夹中进行合并并出现错误,然后浏览至要合并的特定文件夹,然后选择要从中进行合并的正确文件夹。
例,
在我的分支机构中,我具有项目结构:
-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
因此,然后单击“合并”按钮。
如果您有一个名称与分支(或主干)之一完全相同的文件,则可能会发生此错误:
# 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 .
这是一个真实的例子,这使我花费了几个非常不愉快的时间。:(
我有同样的错误,原因是关于权限。
问题是,因为一个开发人员试图将更改从一个他具有读/写访问权限的分支集成到另一个他也具有读/写访问权限的分支中,但最后一个是从另一个拥有读取访问权限的分支创建的分支。
这是具有权限的结构(r =读,w =写):
主干(r)开发(r)质量检查(rw)分支FeatureBranch1(rw)
在这种情况下,已从躯干创建了develop,从develop已创建了QA,并从develop已创建了featureBranch1。在我们的案例中,他尝试将featureBranch1重新集成到QA中,该事实是从development创建的分支,并且他无权以书面形式进行开发,这就是为什么他试图在QA中重新集成featureBranch1时收到此消息的问题。
在给他写开发权限后,该消息立即消失。