use*_*814 34 svn binary version-control
我们想共享运行时项目二进制文件.因此每个团队成员都可以使用当前的工作版本 在SVN中存储运行时二进制文件是可以接受/好的吗?
Von*_*onC 27
您可能希望在版本控制系统中存储二进制文件的两个常见原因是(2009年编写):
(正如2017年ivorujavaboy所指出的那样:"目前唯一能做到这一点的理由就是你拥有永不改变的STATIC库,这是一个非常罕见的案例")
所以,是的,"在SVN中存储运行时二进制文件是可接受/好的"......出于正确的原因.
话虽如此:
Wim*_*nen 22
不,不要在其源代码旁边存储二进制文件(除非您有充分的理由抵消这些缺点).
缺点:
svn update
将更新二进制文件的时间戳,混淆您的构建工具,这会错误地认为二进制文件比源代码更改更新.svn update
和svn merge
通常,避免以确定的方式从其他版本化资源提交任何自动生成的内容.没有冗余 - >没有出现不一致的机会.
相反,使用持续集成服务器在每次提交时自动重建(并运行测试).如果需要,让这个构建服务器在某处(SVN外部)发布二进制文件.
现在,这并不意味着您应该将此视为绝对规则或避免使用所有二进制文件.无论如何,将构建工具和第三方闭源二进制文件放在项目中.并在有意义时制作例外.理想情况下,新开发人员应该能够执行签出并立即启动构建脚本,而无需花费一两天时间来设置其环境.
正如许多人已经说过的那样,这是可以接受的.
是的,方便的是从一个位置获得一切便利,从那里你可以(例如)以二进制形式检查已经具有正确依赖关系的旧标签.
但它并不好,特别是对于备份目的.我们将所有二进制文件(以及部分依赖项)存储在SVN中,随着项目的增长,二进制文件就这样做了.
不幸的是,svnadmin dump
只是转储所有内容,您无法指定要排除的存储库的路径.因此,备份(以及svn服务器的升级)变得非常痛苦!
如果你在我们的情况下在不太长的时间之后添加那些二进制文件已经不再有用,我相信在类似的情况下我不会再这样做(但我会为一个较小的项目做).
所以我建议你在做之前先三思而后行,然后尝试预测你能成长多少以及其他可能发生的事情.
每当我在Subversion目录中看到一个库时,我会问以下问题:
axis.jar
没有axis-1.4.jar
)如果您没有适配器管理系统,通常无法回答这两个问题.这是Jar Hell的第一步.
我可以推荐使用Intranet存储库的Apache Ivy(其他人可能会发誓Maven).使用Ivy,我从来没有将库存储到SVN中,并且总能回答上述问题.
是的,存放它.
我们过去常常将我们提供给客户的二进制文件存储在SVN存储库中以跟踪它.
另外,在SVN(或源代码控制)中存储二进制文件的另一个用途是,如果要向公司中不想构建项目以节省构建时间的其他团队提供一些内部实用程序模块.我相信这是一种常见的做法.
但我们从未允许存储Eclipse的.classpath和.project文件(工作区相关设置).