【发布时间】:2008-10-10 14:19:18
【问题描述】:
在询问this question 后,有人建议我不要将二进制文件签入颠覆。我的问题是,我该如何处理需要在 bin 文件夹中的第 3 方 dll?我需要能够签出工作副本并将其作为网站运行,并且所有 dll 等都完好无损。
【问题讨论】:
标签: svn
在询问this question 后,有人建议我不要将二进制文件签入颠覆。我的问题是,我该如何处理需要在 bin 文件夹中的第 3 方 dll?我需要能够签出工作副本并将其作为网站运行,并且所有 dll 等都完好无损。
【问题讨论】:
标签: svn
您的其他问题的答案建议您不要将任何生成的文件提交给颠覆。 bin 文件夹中的 DLL 通常是作为应用程序的一部分构建的,因此,它们应该重新生成而不是存储在 subversion 中。
如果 DLL 是您没有源代码的第 3 方 DLL,那么我会将它们存储在 subversion 中。您应该将重新创建应用程序所需的所有内容都放入 subversion 中。这意味着您的源代码和第 3 方库或程序。
【讨论】:
我总是签入第三方 DLL(到“lib”文件夹中),以便应用程序可以从新签出处构建和运行。我认为“不签入二进制文件”规则适用于由您签入的源代码生成的二进制文件。
【讨论】:
仅仅因为文件是二进制文件,您不应该检查它。警告应该反对将派生对象签入存储库。您应该始终能够从源代码再次构建所有派生对象。这可能意味着您需要在存储库中拥有第三方二进制文件。
【讨论】:
指南很简单:
--
* 程序、工具、服务包是这条规则的明显例外。但它们必须列在一个版本化的文件中。
【讨论】:
就像本说的。我不会将经常更改的二进制文件放入源代码控制中。但是第三部分的 dll,是的,它们最终也出现在我的 svn 上的 lib 文件夹中。
【讨论】:
我在项目的 DLL 目录中包含任何必需的 DLL,并从那里引用它们(复制到本地)。然后它们可以包含在同一个存储库/文件夹中,或者使用 svn-external 从远程位置引入(如果它们在多个项目之间共享)。
【讨论】:
理想情况下,SVN 存储库应该需要构建目标所需的每个文件。因此,如果您购买了一台全新的计算机,安装了编译器和 SVN,然后检查了存储库 - 您可以构建而无需查找任何其他依赖项。因此,第 3 方库将被放入存储库中,但目标不是。
如果您正在对安装映像进行 SVN 处理,则例外情况。我们在这里这样做,但在我们的生产人员使用的一组不同的存储库中(程序员不使用)。
【讨论】:
如果二进制文件是指可执行文件,最佳做法是从源代码重新生成它们 - 如果源代码可用。如果二进制文件是指非文本文件,我可以告诉你,我一直使用 SVN 来存储非文本文件(jpg 图像、Visio 文件、bmp 文件、带有图像和图表的 MS Word 2003 文档、MS Project 文件和类似的文件。我从来没有遇到过任何损坏或类似的问题。在 SVN 中存储和管理所有内容非常方便。
【讨论】:
在一个干净设计和维护的环境中,您应该拥有自己的 NuGet 服务器,您可以在其中推送您的 DLL 甚至 3rd 方 DLL/二进制文件,您的代码应该从本地 NuGet 服务器下载所有必需的 DLL,所以不要提交SVN 的二进制文件仍然有效。
【讨论】:
事实上,SVN 存储二进制文件的效率比 CVS 高很多,更多信息请参阅SVN-FAQ
【讨论】: