由于二进制文件,SVN合并冲突

时间:2012-10-04 07:46:23

标签: visual-studio svn tortoisesvn binaryfiles merge-conflict-resolution

我正在尝试使用VirtualSVN Server,TortoiseSVN和AnkhSVN,对我来说一切都还很新。

我已经向SVN添加了Visual Studio 2010(VB)解决方案。完成后,trunk包含版本1.0.0,我有一个包含1.0.0版本的标签,以及一个包含版本1.0.0-dev的分支。我开始使用1.0.0-dev(来自分支机构),当1.1.0版本准备就绪时,我创建了一个标签版本1.1.0和一个新的分支1.1.0-dev。

然后我想将这个最新版本(分支1.1.0-dev)合并到主干,但遇到了一个庞大的合并(树?)冲突列表。其中大多数是因为dll文件,可执行文件和其他二进制文件。忽略这些文件似乎是一个好主意,所以我从Windows资源管理器中右键单击每种类型的文件,从上下文菜单中选择“TortoiseSVN - Unversion并添加到忽略列表 - * .dll”(之后也是* .exe)和其他一些文件)。

现在我留下了一个解决方案目录树,其中包含许多黄色感叹号以及删除的标记。

我的问题是:

  1. 如何更新主干,使其包含最新版本?
  2. 在构建解决方案时,如何忽略Visual Studio正在创建的dll?
  3. 有一个第三方dll没有构建,应该包含在存储库中,但文件可能保持不变,我该如何处理?

1 个答案:

答案 0 :(得分:3)

首先,要删除您拥有的已删除标记,您应首先提交您的更改(在这种情况下,它们是删除)。有关此in the SVN Book的更多信息。

其次,在解决我认为不太好的冲突之前,你似乎已经解析了你的二进制文件......我会这样做:

  • 在trunk和dev分支上都有二进制文件,合并更改
  • 你在这些二进制文件上遇到冲突
  • 您解决冲突(使用分支机构或中继版本)
  • 然后您从存储库中删除这些二进制文件(如果需要,将它们添加到忽略列表中)
  • 不要忘记svn commit您的删除

回答你最后的三个问题:

  

1 - 如何更新主干,使其包含最新版本?

您必须使用这样的命令将您的开发分支合并到您的主干中(假设您有一个主干的工作副本,并且分支是在第25版中创建的):

svn merge -r 25:HEAD http://your/repos/branches/my-branch
  

2 - 在构建解决方案时,如何忽略Visual Studio正在创建的dll?

您不应该先添加这些文件。但无论如何,您可以从SVN仓库中删除它们,并在下次构建时再次创建它们。您可以查看this question以获取有关此内容的更多信息。

  

3 - 有一个第三方dll没有构建,应该包含在存储库中,但文件可能保持不变,我应该如何处理?

您可以像对待任何其他类型的文件一样将二进制文件添加到存储库。如果SVN未正确检测到您的文件是二进制文件,则可以使用svn propset命令强制执行该文件,如here所述。