Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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
Java Subclipse合并问题-干运行与合并结果不匹配_Java_Svn_Version Control_Merge_Subclipse - Fatal编程技术网

Java Subclipse合并问题-干运行与合并结果不匹配

Java Subclipse合并问题-干运行与合并结果不匹配,java,svn,version-control,merge,subclipse,Java,Svn,Version Control,Merge,Subclipse,我在Eclipse中使用Subclipse1.6x插件。让我先解释一下情况: 假设我有我的项目的主干,修订版本为r1到r100。 在r100版本中,我创建了一个分支,并开始提交r101到r105。 在这一点上,我认为我将从主干引入任何更改,以便更新我的分支 但由于合并错误,我最终将r80从主干合并到分支,并将其作为r106修订版提交。因此,我在分支中恢复r106中的更改,并将r107再次提交到此分支 在此期间,后备箱中出现了r108和R109。 现在,在r106中恢复我的错误提交后,我正确地将从

我在Eclipse中使用Subclipse1.6x插件。让我先解释一下情况:

假设我有我的项目的主干,修订版本为r1到r100。 在r100版本中,我创建了一个分支,并开始提交r101到r105。 在这一点上,我认为我将从主干引入任何更改,以便更新我的分支

但由于合并错误,我最终将r80从主干合并到分支,并将其作为r106修订版提交。因此,我在分支中恢复r106中的更改,并将r107再次提交到此分支

在此期间,后备箱中出现了r108和R109。 现在,在r106中恢复我的错误提交后,我正确地将从主干到r109的所有更改引入到我的分支(通过合并),以便我的分支是最新的,并将其作为r110提交到我的分支

一切都很好。现在我决定不需要分支,所以让我将分支(r110)中的所有更改合并回主干。因此,在这次合并之后,我应该看到的是我在分支中所做的更改(修订R101和该分支中的更高版本),因为我的分支与主干是最新的

我做了一个团队->合并,从url作为主干,到url作为我的分支路径。From版本是trunk(r109)中的最后一个合并版本,To版本是my branch(r110)中的最新版本。我尝试了一次试运行,并在合并窗口中创建了一个统一的Diff文件选项。它们看起来都是正确的,唯一更新的文件是我在分支中更改的文件

现在我运行合并,合并结果不同于干运行。首先,它正确地合并了Dry Run显示的文件(这是我所期望的)。但这并不止于此。然后,它会尝试以下内容: ---合并r80到r110(可能是因为我在分支中的错误合并??)

然后做一些类似的事情: ---反向合并r110到r80

最终的结果是合并我所有的更改,就像干运行结果一样,再加上对其他文件的大量更新/更改(我想是由于第二次合并和反向合并)

关于为什么会发生这种情况,以及如何使合并结果正确/与试运行结果相同,您有什么想法吗?甚至创建的统一diff文件也是正确的


感谢您阅读这篇冗长的文章。

Subclipse合并对话框在Subversion 1.5和合并跟踪引入之前就没有使用过。我建议您安装Subclipse更新站点上包含的CollabNet合并客户端插件,看看是否得到相同的结果


如果安装了此客户端,“团队>合并”选项将显示一个向导。

好的,我已经解决了这个问题,或者至少解决了我的问题。问题是因为在我的分支上,我错误地从主干合并了r80,并将其指定为r106。然后我执行了团队>恢复>上次提交来恢复此合并提交,并将其作为新提交r107进行检查

这有两个问题。首先,这不是在SVN中恢复合并提交的最佳方法。谷歌搜索更多细节

第二个问题是,当您将这些更改(在多个提交中)合并回主干时,SVN将尝试将每个提交逐一应用于主干。当我通过合并r80在分支上弄乱r106时,SVN对更改感到困惑,因为文件的祖先冲突。为了避免这种情况,并告诉SVN不要担心祖先,只需将分支中的差异/更改合并到主干,请选中合并窗口中的“忽略祖先”选项。这帮我解决了这个问题

另请注意,在SVN merge中,干运行的结果相当于在文件之间运行Diff。但是,当您进行合并时,它将查看文件的祖先,并逐一引入每个提交来进行合并。因此,结果可能并不总是相同的。SVN文档中有关于此的更多详细信息


这是我从我的经验中了解到的,我将此作为答案发布在这里,因为我没有收到任何其他回复。如果我不完全正确,请添加任何评论。

谢谢您的评论,但这没有帮助。我还发现subclipse比CollabNet更友好。YMMV