SVN和二进制文件

SVN和二进制文件,svn,Svn,询问之后,有人建议我不要将二进制文件签入subversion。我的问题是,我该如何处理需要放在bin文件夹中的第三方DLL?我需要能够签出一个工作副本,并将其作为一个网站运行,所有DLL等保持不变。我总是签入第三方DLL(到“lib”文件夹中),以便应用程序可以在新签出时构建和运行。我认为“不签入二进制文件”规则适用于由您签入的源代码生成的二进制文件。对您的其他问题的回答建议您不要将任何生成的文件提交给subversion。bin文件夹中的DLL通常是作为应用程序的一部分构建的,因此,它们应该重

询问之后,有人建议我不要将二进制文件签入subversion。我的问题是,我该如何处理需要放在bin文件夹中的第三方DLL?我需要能够签出一个工作副本,并将其作为一个网站运行,所有DLL等保持不变。

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

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


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

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

就像Ben说的那样。我不会将经常更改的二进制文件放入源代码管理中。但是第三部分dll,是的,它们最终也会出现在我的svn上的lib文件夹中。

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

事实上,SVN存储二进制文件的效率比CVS高很多,有关更多信息,请参见

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


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

指导原则很简单:

  • 应签入重建解决方案所需的所有内容*
  • 在构建过程中生成的任何内容都必须置身事外
--

*程序、工具和服务包显然是这一规则的例外。但是它们必须被列在一个有版本控制的文件中。

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

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

您好,我同意您的回答。但是,我已经为*.dll设置了全局忽略,现在我无法将新二进制文件从visual studio提交到SVN!知道如何导入吗它是否适用于现有项目?