2009-09-03 104 views
2

我使用Eclipse和Subversion诉3.4.2(用svn 1.4.6在服务器上),我理解特定的选项(深度有问题,忽略祖先等)以及如何将变化从树干合并到分支中,然后再返回。颠覆和Eclipse - 分支,并与行李箱合并

此外,当冲突的更改都存在,颠覆似乎打破 - 在冲突的文件比较编辑器,我的本地文件包含SVN文本(例如< < < < < < <。工作),这显然不出现在实际的工作副本文件中。如果我回到我的资源视图,我会看到一大堆SVN临时文件。这是一个错误,或者我做错了什么?

回答

3

的“断裂”为你描述它是颠覆工作的标准方式 - 当行冲突合并结果,SVN保持了冲突双方,并把它们在源文件中供您查看。你必须编辑您冲突的文件,检查您的冲突与存储库的版本的版本,并对其进行编辑,这样只有一组遗体(删除< < < <线,该线>>>>的=====行和所有你不想要的冲突代码行)。之后,右键单击源文件并选择“标记为已合并”。之后你可以提交你的合并文件。这称为手动合并,您必须在发生冲突时完成此操作。

一堆临时文件是来自任何一方的原始源文件,他们应该帮助您解决冲突 - 您应该有一个以“.mine”结尾的文件,它是您原始的干净版本的源文件和以“.rXXXXX”结尾的文件(其中XXXX是Subversion修订版号),它是存储库的源文件的原始清除版本。当你“标记为合并”这些文件将会消失。

Eclipse有一个漂亮的图形工具,你可以用它来解决使用比较样式编辑器的冲突,但它有一些怪癖,它需要的工具的一些实践和了解,以便有效地使用它。如果您想尝试,可以在文件的RMB菜单 - >团队 - >编辑冲突下找到它。

+0

另外请注意,Subversive在合并对话框中有一个错误 - 通常只需要合并自上次复制(分支)以来的修订,而当你在合并对话框中选择“停止复制”时,由于错误Subversive会尝试合并所有修订版本。要解决它,请尝试选择具体的修订选项,点击“选择”以显示历史记录对话框,然后取消并返回到“停止复制” - 应该做的伎俩。 – Guss 2009-09-03 22:29:51

+0

是的,我意识到Subversion如何与.rXXX和.mine协同工作,但是Eclipse通过将这些文件实际保存到我的工作副本中来“破坏”它。尽管我在“合并”对话框中选择了实际的修订版,但我感到更加接近,所以感谢您指出了这一点! – mbelos 2009-09-03 22:47:00

+0

仅供参考,我需要在“合并”对话框中选择“2 URL”选项卡。选择头修订工作正常... – mbelos 2009-09-03 22:55:37

0

我想你可能会发现那些行如<<<<< .working出现在您的实际工作副本文件中。这就是Subversion如何让你知道文本的哪些部分需要手动编辑,因为合并冲突。

您可以在优秀Version Control with Subversion本书的Resolve Conflicts部分阅读更多关于合并的工作流程。

+0

当然,Eclipse很聪明,可以在比较编辑器中正确地打开它 - 我有初级开发人员,如果他们看到的话会惊慌! – mbelos 2009-09-03 22:28:32

+0

我无法评论Eclipse的智能(我使用vim)。 – 2009-09-03 22:45:16

+0

好的 - 是的,这是Eclipse的插件,开始引起一些头痛,但我认为我有一个解决方案发生。谢谢! – mbelos 2009-09-03 22:50:08