SVN和二进制文件

30

在问过这个问题后,我被建议不要将二进制文件检入到Subversion中。那么我的问题是,对于需要放置在bin文件夹中的第三方DLL文件,我该怎么办?我需要能够检出一个可运行的副本,并且具有所有DLL文件等内容以作为网站运行。

10个回答

55

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

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


嗨,我同意你的答案。但是,我已经设置了*.dlls的全局忽略,现在我无法从Visual Studio提交新的二进制文件到SVN!有什么办法可以将其导入到现有项目中吗? - Krunal

11

我总是将第三方DLL检入到一个“lib”文件夹中,这样应用程序可以从头开始建立和运行。 我认为“不要检入二进制文件”的规则适用于您检入的源代码生成的二进制文件。


5

就像Ben所说的一样,我不会将经常更改的二进制文件放入源代码控制中。但是第三方dll文件,它们最终也会被放在我的svn的lib文件夹中。


5

仅仅因为一个文件是二进制的,并不意味着你不应该检查它。警告应该是不要将派生对象提交到代码库中。你应该始终能够从源代码重新构建所有的派生对象。这可能意味着你需要在代码库中存储第三方二进制文件。


5

这些准则很简单:

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

--
* 程序、工具和服务包是显而易见的例外。但它们必须列在一个有版本控制的文件中。


1

我会将所有必需的DLL文件放置在工程的DLL目录中,并从那里引用它们(使用复制到本地功能)。然后它们可以被包含在同一个代码库/文件夹中,或者通过svn-external从远程位置带入(如果它们需要跨多个工程共享)。


1
理想情况下,SVN存储库应该需要构建目标所需的每个文件。因此,如果您购买了一台全新的计算机,安装了编译器和SVN,然后检出存储库-您可以构建而无需查找任何其他依赖项。因此,第三方库将放在存储库中,但目标不会。
唯一的例外是如果您正在SVN安装映像。我们在这里这样做,但在我们的生产人员使用的不同存储库中(程序员不使用)。

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

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

0

实际上,SVN比CVS更有效地存储二进制文件,欲了解更多信息,请参见 SVN-FAQ


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接