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

awi*_*ied 17 eclipse svn merge subversive

我已经习惯了如何在Eclipse中进行CVS合并,而且我对Subclipse和Subversive使用SVN存储库的方式感到满意,但我不太确定如何正确地进行合并.

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

这个问题并不特别针对Subclipse或Subversive.

谢谢您的帮助!

DH4*_*DH4 72

将整个分支合并到主干中

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

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

  3. 现在转到Eclipse工作区中的"trunk"项目并选择"右键单击 - 团队 - 合并"

  4. 默认视图是1 url合并

    • 选择要合并的分支的URL
    • 在"修订"下选择"全部"
    • 按确定
  5. 这将带您进入"团队同步"视角(如果不是,您应该自己去那里)以解决冲突(见下文)

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

  1. 检查主干项目历史记录以确定您上次合并到主干的时间(您应该对此进行评论)

    • 为了争论,我们说这个版本是82517
  2. 所以现在我知道分支中任何大于82517的版本都需要合并到trunk中

  3. 现在转到Eclipse工作区中的"trunk"项目并选择"右键单击 - 团队 - 合并"

  4. 默认视图是1 url合并

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

解决冲突

  1. 您应该处于"团队同步"的角度.这看起来像用于提交目的的任何常规同步,其中您看到新文件和有冲突的文件.

  2. 对于您看到冲突的每个文件,选择"右键单击 - 编辑冲突" (不要双击该文件,它将调出提交差异版本工具,这是非常不同的)

    • 如果你看到"<<<<<<< .working"或">>>>>>> .merge-right.r84513"这样的东西,那么你的编辑模式是错误的
  3. 解决该文件中的所有冲突后,告诉文件"标记为已合并"

  4. 一旦所有文件都没有冲突,您就可以同步Eclipse项目并将文件提交到SVN

  • 对于你接受的答案的2个赞成票赞成你同意@HDave的40票 (2认同)

Met*_*002 1

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

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

KDiff3 是可移植的,TortoiseSVN 是 Windows shell 扩展,因此如果您使用其他环境,我会尝试仅使用 SVN 进行合并。但这会更痛苦:)

  • 我想说它被否决只是因为问题是关于如何在 Eclipse 中执行此操作的具体问题。 (20认同)
  • 有时答案必须是开箱即用的。 (9认同)
  • 特别是如果它基本上为有关多平台 IDE 的问题提出了有效的单平台替代方案。 (8认同)