2

我正在试验VirtualSVN服务器,TortoiseSVN和AnkhSVN,并且对我来说,一切都还是比较新的。SVN合并冲突,因为二进制文件

我已经为SVN添加了Visual Studio 2010(VB)解决方案。在完成这个包含版本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)合并到trunk中,但遇到一个巨大的merge(tree?)冲突列表。他们大多数是因为dll文件,可执行文件和其他二进制文件。忽略这些文件似乎是一个好主意,所以我从Windows资源管理器中执行了操作,右键单击每种类型的文件,从上下文菜单中选择“TortoiseSVN - Unversion并添加到忽略列表 - * .dll”(之后还可以* .exe和其他一些文件)。

现在我剩下一个带有大量黄色感叹号和删除标记的解决方案目录树。

我的问题是:

  1. 如何更新后备箱所以它包含了最新版本?
  2. 无论如何,在构建解决方案时如何忽略由Visual Studio创建的dll?
  3. 有一个第三方dll不是构建,应该包含在存储库中,但该文件可能保持不变,我该如何处理?

回答

3

第一件事,除去删除标记你有,你应该第一次提交更改(在这种情况下,他们是缺失)。更多关于这个in the SVN Book的信息。

其次,似乎你解决,我认为不是那么好了冲突之前unversionned您的二进制文件...我会做这种方式:

  • 个二进制文件在树干都呈现并在Dev分支,合并更改
  • 你对这些二进制文件
  • 您解决冲突,冲突(使用分支的或行李箱的版本)
  • 然后删除在t这些二进制文件他仓库(并将其添加到,如果需要忽略列表)
  • 不要忘了你的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所述。