毫无疑问,可以将src代码保存到SCM中,但是生成的构建又如何呢?相反,将它们保存到文件系统中,考虑到您有许多客户具有不同的版本,并且触手可及,将它们保存到SCM中将是一种良好的做法。
发布于 2011-08-06 04:34:49
您不应该在版本控制中存储生成的二进制文件。它们应该是使用存储库中的构建脚本编译和捆绑存储库中的源代码的输出。如果您的构建由于某种原因而不可重现,那么就去解决这个问题。不要滥用版本控制,将其应用于不演化的工件。
请注意,这都是参考您的二进制文件。如果您有外部依赖项,有时将它们置于版本控制之下是合理的,因为它们是构建过程的输入。这可能是像第三方库或工具链组件这样的东西。
如果您只是需要已发送给客户的内容的备份,请将完整的映像或归档文件放在与您的存储库相同的备份文件系统中。将它们放在VCS位于文件系统顶部的额外包装层中并没有什么特别之处。如果有什么不同的话,那就是不太可靠,因为还有一个可能的腐败点。在任何一种情况下,如果您关心这些归档构建的完整性,您应该在发布时对它们进行加密散列,并将这些散列与归档一起记录下来,以便您以后可以验证它们。如果你是真正的偏执狂,用一个私钥来签署校验和文件,而这个私钥并没有保存在文件服务器上。
发布于 2011-08-05 23:34:05
当然,您不能查看二进制文件的不同之处,但任何类型的文件都可以放入版本控制。
我在SVN中从来没有遇到过二进制文件的问题,但是如果您不小心,在其他一些SCM (Git,可能还有其他)中,它们可能会被破坏。
如果您正在使用SVN,则需要考虑的另一件事是,每当您上传二进制文件的新版本时,repo所使用的空间量将与二进制文件的大小一样多地增长。之所以会发生这种情况,是因为对二进制文件进行比较并没有真正的意义,因此每个连续的副本都必须完整存储。因此,如果服务器辅助存储空间是一个问题,或者您的二进制文件很大,您可能想要考虑一个替代解决方案。
所以..。您是否在使用SVN?:)
发布于 2011-08-05 23:53:51
不建议将生成的工件保存到SCM中。
我不知道您正在开发什么类型的程序,对于Java项目,最好的做法是使用Maven构建工件并将其存储到Maven Repository中。请阅读此article了解更多关于Maven Repository的信息,以及为什么不将二进制文件放入SCM中。
https://stackoverflow.com/questions/6958666
复制相似问题