SVN和二进制文件

时间:2008-10-10 14:19:19

标签: svn

在询问this question之后,我被建议不要将二进制文件检入subversion。我的问题是,我如何处理bin文件夹中需要的第三方dll?我需要能够签出一份工作副本并将其作为一个包含所有dll等的网站运行。

10 个答案:

答案 0 :(得分:54)

您的其他问题的答案建议您不要将任何生成的文件提交给subversion。 bin文件夹中的DLL通常构建为应用程序的一部分,因此,它们应该被重新生成而不是存储在subversion中。

如果DLL是没有源代码的第三方DLL,那么我会将它们存储在subversion中。您应该将所有内容放在重新创建应用程序所需的subversion中。这意味着您的源代码和第三方库或程序。

答案 1 :(得分:11)

我总是检查第三方DLL(进入'lib'文件夹),以便应用程序可以从新的结帐中构建和运行。我认为“不要签入二进制文件”规则适用于您签入的源代码生成的二进制文件。

答案 2 :(得分:5)

像Ben说的那样。我不会将经常更改的二进制文件放入源代码控制中。但是第三部分是dll,你们最终还是在我的svn上的一个lib文件夹中。

答案 3 :(得分:5)

仅仅因为文件是二进制不是你不应该检查它。警告应该反对将派生对象检入存储库。您应始终能够从源中再次构建所有派生对象。这可能意味着您需要在存储库中拥有第三方二进制文件。

答案 4 :(得分:5)

指南很简单:

  • 重建解决方案所需的一切都应该在*
  • 中签入
  • 构建过程中生成的任何内容都必须保持不变

-
*程序,工具,服务包是此规则的明显例外。但是它们必须列在一个版本化的文件中。

答案 5 :(得分:1)

我在项目的DLL目录中包含任何必需的DLL,并从那里引用它们(复制到本地)。然后,它们可以包含在同一个存储库/文件夹中,也可以从远程位置使用svn-external引入(如果它们在多个项目中共享)。

答案 6 :(得分:1)

理想情况下,SVN存储库应该需要构建目标所需的每个文件。因此,如果您购买了一台全新的计算机,安装了您的编译器和SVN,然后检查了存储库 - 您可以构建而无需找到任何其他依赖项。因此,第三方库将被放入存储库,但目标不是。

如果您正在SVNing安装映像,则会出现例外情况。我们在这里这样做,但是在我们的制作人员使用的一组不同的存储库中(程序员没有)。

答案 7 :(得分:1)

如果二进制文件是指可执行文件,最佳做法是从源代码重新生成它们 - 如果源可用。如果二进制文件是指非文本文件,我可以告诉你我一直使用SVN来存储非文本文件(jpg图像,Visio文件,bmp文件,带有图像和图表的MS Word 2003文档,MS Project文件和类似的文件。我从来没有遇到任何腐败或类似的问题。在SVN中存储和管理所有内容非常方便。

答案 8 :(得分:0)

事实上,SVN确实存储二进制文件比CVS更有效,有关更多信息,请参阅SVN-FAQ

答案 9 :(得分:0)

在干净设计和维护的环境中,您应该拥有自己的NuGet服务器,可以在其中推送DLL甚至是第三方DLL /二进制文件,您的代码应从本地NuGet服务器下载所有必需的DLL,因此请不要提交SVN的二进制文件仍然有效。