SVN合并冲突是因为二进制文件



我正在试用VirtualSVN服务器、TortoiseSVN和AnkhSVN,一切对我来说仍然很新鲜。

我为SVN添加了一个Visual Studio 2010(VB)解决方案。完成这项工作后,主干包含1.0.0版本,我有一个包含1.0.0版的标签,还有一个包含1.00-dev版本的分支。我开始(从分支)处理1.0.0-dev,当1.1.0版本准备好时,我创建了一个1.1.0版本的标签和一个新的1.1.0-dev分支。

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

现在我只剩下一个解决方案目录树,上面有很多黄色感叹号和删除的标记。

我的问题是:

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

首先,要删除您所拥有的已删除标记,您应该首先提交您的更改(在这种情况下,它们是删除)。有关这方面的更多信息,请参阅SVN手册。

其次,在解决我认为不太好的冲突之前,您似乎对二进制文件进行了解密。。。我会这样做的:

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

回答最后三个问题:

1-如何更新中继,使其包含最新版本?

您必须使用以下命令将您的开发分支合并到主干中(假设您有主干的工作副本,并且该分支是在修订版25中创建的):

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

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

您不应该先添加这些文件。但无论如何,您可以从SVN回购中删除它们,它们将在下一次构建中再次创建。你可以看看这个问题,了解更多信息。

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

您可以像处理任何其他类型的文件一样,将二进制文件添加到存储库中。如果SVN没有正确检测到您的文件是二进制文件,您可以使用svn propset命令强制它,如下所述。

最新更新