假设我写了一个jQuery插件并将其添加到我的存储库(在我的案例中为Mercurial)。这是一个单独的文件,比如jquery.plugin.js
。我正在使用BitBucket来管理这个存储库,它的一个功能是下载页面。因此,我添加jquery.plugin.js
作为下载之一。
现在我想提供我的插件的缩小版本,但我不确定最佳做法是什么。我知道它应该在“下载”页面上以jquery.plugin.min.js
的形式提供,但是每次我更新时都应该对其进行版本控制以反映未公开的版本吗?
我看到控制缩小版本的版本最明显的问题是每次我更改未公开的版本时我都会忘记更新它。
那么,我应该控制缩小的文件吗?
答案 0 :(得分:8)
不,您不需要在源代码管理下保持生成的最小化版本。
我们在将生成的文件添加到源代码控制(TFS)时遇到了问题,因为TFS将本地文件设置为只读方式。生成文件作为构建过程的一部分的工具会出现写入访问问题(这可能不是其他版本控制系统的问题)。
但重要的是,所有:
以及构建,测试和部署产品所需的任何其他内容都应受版本控制。
您应该能够从源代码管理中检出特定版本(通过标记或版本号或等效版本),并完全按照该时间点重新创建软件。即使在“新鲜”机器上也是如此。
构建不应该依赖于任何不受源代码控制的东西。
脚本:build-scripts是否为ant,make,MSBuild命令文件或您正在使用的任何内容,以及您可能需要在版本控制下进行的任何部署脚本 - 而不仅仅是在构建计算机上。
工具:这意味着编译器,最小化器,测试框架 - 构建,测试和部署脚本工作所需的一切 - 应该受源代码控制。您需要这些工具的确切版本才能重新创建到某个时间点。
这本书“Continuous Delivery”教会了我这一课 - 我强烈推荐它。
虽然我相信这是一个好主意 - 并尽可能坚持下去 - 但在某些方面我并不是100%肯定。例如操作系统,Java JDK和持续集成工具(我们使用的是Jenkins)。
您是否实践持续集成?这是一个很好的方法来测试你是否掌控了上述所有内容。如果在构建软件之前必须在Continuous Integration机器上进行任何手动安装,可能会出现问题。
答案 1 :(得分:4)
我的简单经验法则:
这可以在构建过程中自动生成吗?
答案 2 :(得分:3)
以下是我自己使用的“存储库的合理规则”:
这绝对是一种情况,你的里程可能会有所不同,但三个合理规则对我来说效果很好。