如何在Eclipse中合并大型项目?

时间:2010-01-15 14:22:37

标签: java eclipse svn merge

我已经在分支机构工作了很长一段时间,但我总是使用命令行工具来进行实际的合并。但是,现在我只需要从Eclipse中完成它。分支和合并是SCM系统多年来广泛使用的特性,我预计Eclipse会有很好的支持,但它似乎并非如此。

目前我正在开发一个由几个需要分支在一起的项目构建的产品。将更改从trunk更改为分支时,通常我会从分支checkout的根目录执行以下命令:(我在这里使用Subversion作为示例,但问题也应该适用于其他SCM工具。)

svn update
svn merge ^/trunk
svn commit -m "Merged from trunk"

也许在中间解决一些冲突,但这就是我要做的一切。但是,在Eclipse中,我只能在项目级别进行合并,这具有以下缺点:

  • 我无法合并根文件夹的内容,只能合并各个项目的内容。同样适用于更新,BTW。
  • 如果在主干上修改了项目结构(例如,添加了新项目),则这些更改根本不会合并。同样更新,再次。
  • 合并不是原子的。如果在合并期间在trunk上发生了提交,那么事情就会在我的工作副本中搞砸了。 (这可以解决,但不方便。)

这些限制似乎非常简单,因为Eclipse不知道根文件夹,因为它从SVN中检出单个项目。

我的问题是:我错过了什么,或者是否真的不可能以类似于我在命令行中执行的方式使用Eclipse?如果确实不可能,那么其​​他人如何应对呢?每个人都使用命令行或TortoiseSVN等外部工具吗?

4 个答案:

答案 0 :(得分:3)

你的观察是正确的。 Eclipse仅在项目级别管理svn等“团队”操作。所以,你没有遗漏任何东西; - )

是的,您必须使用外部工具来合并整个分支。乌龟做得很好。

答案 1 :(得分:3)

可以使用Eclipse插件 CollabNet Subversion Merge Client 完成多项目合并。您可以在 com.collabnet.subversion.merge 找到它。

在首选项中启用它:

Eclipse Preferences > Team > SVN > Diff/Merge 

并且:Merge Implementation: CollabNet Desktop

答案 2 :(得分:0)

你提到的确实是一个限制。我通常检查整个文件夹结构,然后将各个项目导入eclipse。当我需要在整个存储库上执行操作时,我使用命令行或Tortoise SVN在eclipse之外进行操作。

当有人添加新插件(我正在开发Eclipse RCP应用程序)时,我也需要手动将其添加到项目列表中,因为Eclipse不知道所有项目的根目录,这也很痛苦。

答案 3 :(得分:0)

在Eclipse中,SVN分支和合并适用于单个项目,在处理已经分支并需要合并的单个项目时,我没有遇到任何问题。

但是,如果需要在一个单元中处理多个项目,那么这似乎不可能直接在eclipse中处理,每个项目都需要单独处理。