我使用Subversion作为源代码存储库。现在我们决定签入SVN中的二进制依赖项。之前在SVN中没有检查过这些依赖关系,因此我应该遵循什么结构来存储SVN中的二进制文件,以便没有重复或丢失的二进制文件。 (在SVN中存储二进制文件的一些优化方法)。
答案 0 :(得分:0)
你应该重新考虑你的决定。
存储库中的二进制文件占用了大量空间。文本文件可以轻松压缩,但二进制文件不能。文本文件很容易区分,但不是二进制文件。
假设您有一个大约256 Mb的二进制文件。这并不是那么大,但每次检查更改时,您都会在Subversion存储库中添加另外256Mb。每周检入一次此文件的版本,并且已将12Gb文件添加到存储库中。提交一年后,这是一个文件。
而且,二进制文件没有真正的历史记录。你只能看到谁签入了二进制文件。您无法看到所做的更改。你甚至无法看到哪些文件被编译成二进制文件。你也可以合并二进制文件。如果您在分支中进行了更改,则无法将该分支中的二进制文件合并到主干中。
因此,对二进制文件进行版本控制将很快压倒您的Subversion存储库(95%的存储库除了存储二进制文件历史记录之外并不常见)。但是,你得不到任何回报。二进制文件没有附加到它们的真实历史记录。他们的差异无法合并,他们的价值很短暂。
将二进制文件存储到发布存储库中要好得多。您没有说出您正在构建的内容,但C#/ .NET可以使用NuGet作为发布存储库。如果要构建Java应用程序,可以将Ant与Ivy,Gradle或Maven一起使用。如果您使用C / C ++,则可以使用wget或curl来提取预构建的二进制文件。没有理由在Subversion中存储二进制文件。