gpt4 book ai didi

git - 征求意见 : revision control and binaries

转载 作者:太空狗 更新时间:2023-10-29 12:51:28 24 4
gpt4 key购买 nike

人类编写源代码

版本控制用于记录源代码的变化

工具 处理源代码并生成机器可读的内容(exec、libs、GUI 代码等)

每隔一段时间,我想保存一份工具输出的副本(例如,为 ARM 保存 beta 版的可执行文件)。我可以手动保存工具的输出,给它一个反射(reflect)修订控制历史记录点的名称(例如使用标签名称)。这看起来很尴尬而且容易出错。

我希望您能深入了解两件事:

  1. 使用修订控制将工具生成的输出存储在修订历史图表中的特定位置的优点/缺点是什么?您使用哪些非 RCS 工具作为替代?

  2. 在 mercurial、git 中,将工具生成的输出包含在特定修订而不是其他修订中的最佳方式是什么

最佳答案

我认为二进制文件不应与其源代码一起存储在版本控制中。

缺点:

  • 它鼓励大型项目中的不良构建实践。最佳实践是完全自动化您的完整构建(不仅是源代码编译,还包括运行自动化测试、文档打包、设置生成等)。提交二进制文件可以让您忽略这一点:“只需手动为已更改的部分进行构建”。
  • 较慢的更新和提交
  • 每次构建后更新都需要处理二进制文件的冲突
  • 提交更改源代码而不是相应的二进制文件会在开发人员中引起混淆。您如何检测到不匹配?
  • svn update 将更新您的二进制文件的时间戳,混淆您的构建工具,它们会错误地认为二进制文件比您的源代码更改更新。
  • 它在存储库中使用了更多的磁盘空间。 (根据您的项目,这可能可以忽略不计。)

一般来说,我认为您应该避免提交任何从其他版本化资源以确定性方式自动生成的内容。没有冗余 -> 没有不一致的机会。

相反,使用持续集成服务器在每次提交时自动重建(并运行测试)。如有必要,让此构建服务器将二进制文件发布到某处(SVN 外部),例如网络上的共享文件夹。

关于git - 征求意见 : revision control and binaries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4237021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com