Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
在Eclipse中进行Subversion合并的正确方法是什么?_Eclipse_Svn_Merge_Subversive - Fatal编程技术网

在Eclipse中进行Subversion合并的正确方法是什么?

在Eclipse中进行Subversion合并的正确方法是什么?,eclipse,svn,merge,subversive,Eclipse,Svn,Merge,Subversive,我非常习惯于如何在Eclipse中进行CVS合并,另外我对Subclipse和Subversive在SVN存储库中的工作方式也很满意,但我不太确定如何正确地进行合并 当我进行合并时,它似乎希望将合并的文件粘贴到项目中的单独目录中,而不是像我在CVS中习惯的那样,覆盖合并中要替换的旧文件 这个问题不是特别针对下流分子或颠覆分子的 谢谢你的帮助 我通常签出两个分支,然后使用“相互比较”选项,该选项对两个源树进行类似同步的比较。将更改集成到一个分支后,您可以重新提交回存储库。我建议不要尝试使用Ecli

我非常习惯于如何在Eclipse中进行CVS合并,另外我对Subclipse和Subversive在SVN存储库中的工作方式也很满意,但我不太确定如何正确地进行合并

当我进行合并时,它似乎希望将合并的文件粘贴到项目中的单独目录中,而不是像我在CVS中习惯的那样,覆盖合并中要替换的旧文件

这个问题不是特别针对下流分子或颠覆分子的


谢谢你的帮助

我通常签出两个分支,然后使用“相互比较”选项,该选项对两个源树进行类似同步的比较。将更改集成到一个分支后,您可以重新提交回存储库。

我建议不要尝试使用Eclipse的插件作为对Subversion的主要访问

如果您是在Windows上开发的,那么TortoiseSVN是我见过的用于Subversion访问的最好的程序。浏览到要合并的目录,右键单击该目录并使用Tortoise SVN合并选项。假设采用非交互式合并,一旦发生冲突,您必须遍历每个冲突文件并编辑冲突,然后再将其标记为已解决。对于这个过程,我推荐一个名为KDiff3的程序,它显示本地存储库副本(合并前存储在.svn中的内容)、本地副本(包括任何更改)和来自存储库的副本,并允许您轻松查看(甚至在需要时手动修改)合并的结果。它还自动处理一系列小冲突


KDiff3是可移植的,TortoiseSVN是一个windows shell扩展,所以如果您使用的是另一个环境,我会尝试使用SVN进行合并。但这将是一个更痛苦的问题:)

使用Eclipse集成,它工作得非常好

CVS的主要变化是只合并分支中的增量,即从一个修订版更改为另一个修订版。 也就是说,您必须以某种方式跟踪正确的开始版本(除非您有svn 1.5合并历史记录)


如果你做对了,那么只有你自己才能使用比较编辑器正确地进行更改。

记住,使用svn将修改过的树恢复到干净状态是相当容易的。只需在合并目标分支上有一个干净的工作区,并运行merge命令从合并源分支导入修改,然后同步工作区,您将获得通常的eclipse比较窗口,其中显示所有合并修改的文件和冲突

如果由于某种原因无法解决冲突,您可以在项目上恢复svn并返回到干净状态,否则您可以就地执行合并,完成后即可提交。请注意,您不必提交,一旦处理完冲突,您还可以返回到dev视图,验证代码是否编译,运行单元测试,然后再次同步并提交(一旦本地解决了冲突,它们就不会回来)

上次我查看时,当使用subclipse merge命令时,它将覆盖合并文件(使用冲突标记显示冲突区域),并将合并的原始左侧和右侧放在同一位置。它不应该把任何东西放在不同的目录中


根据经验,最好在一次提交中提交所有合并修改,并且只在提交中包含合并修改,以便以后可以在需要时回滚合并。

将整个分支合并到主干中

  • 检查分支项目历史记录以确定从中获取分支的版本

    • 默认情况下,Eclipse团队“History”仅显示过去的25个修订版本,因此您必须单击该视图中标记为“Show All”的按钮
    • 当你说“全部显示”时,它会带你回到分支日期之前,并向你显示主干的所有历史记录,因此你必须在你分支的地方搜索你的评论
    • 注意:如果您将Tortise SVN用于同一任务(导航到分支并选择“显示日志”),它将仅显示分支历史,以便您可以准确地知道分支的起始位置
  • 现在我知道82517是分支历史的第一个版本ID。所以82517之后的分支的所有版本都有我想要合并到主干中的更改

  • 现在转到Eclipse工作区中的“trunk”项目,并选择“右键单击-团队-合并”

  • 默认视图是1 url合并

    • 选择要合并的分支的URL
    • 在“修订”下选择“全部”
    • 按OK
  • 这将带您进入“团队同步”透视图(如果没有,您应该自己去那里)以解决冲突(见下文)

  • 将更多分支更改重新合并到主干中

  • 插入trunk项目历史记录以确定上次合并到trunk的时间(您应该对此进行注释)

    • 为了便于讨论,我们假设这个版本是82517
  • 所以现在我知道分支中任何大于82517的版本都需要合并到主干中

  • 现在转到Eclipse工作区中的“trunk”项目,并选择“右键单击-团队-合并”

  • 默认视图是1 url合并

    • 选择要合并的分支的URL
    • 在“修订”下选择“修订”单选按钮,然后单击“浏览”
    • 这将打开最新的25个分支修订的列表
    • 选择数字大于82517的所有修订
    • 按OK(您应该在单选按钮旁边的输入字段中看到修订列表)
    • 按OK
  • 这将带您进入“团队同步”透视图(如果没有,您应该自己去那里)以解决冲突(见下文)