【问题标题】:How do you avoid forgetting to increase version number for your project? [closed]如何避免忘记增加项目的版本号? [关闭]
【发布时间】:2010-02-03 06:09:27
【问题描述】:
我总是忘记改bugfix版本的版本号,当我发布1.0.9时,可能源代码中的版本号仍然是1.0.0
到目前为止,这并不是什么大问题,因为每个版本都记录在 SVN 中,我可以随时从我的 SVN 中检索指定的版本。
但我知道它不好,并且在可预见的将来升级旧版本时可能会出现问题。我将版本号作为参数存储在我的源代码中,我想是否有更好的方法来控制这个数字,特别是对于 php web 项目(我知道其他一些语言有自动版本生成,但在 php 中似乎没有?)。
您如何在项目中解决这个问题?有什么最佳做法吗?
【问题讨论】:
标签:
php
version-control
project-management
【解决方案1】:
使用TeamCity 等持续集成软件,并使用接受版本号作为参数的构建脚本。你的构建脚本可能只是调用了一个小工具:打开一个文件(versioninfo.php),搜索这个字符串(一些正则表达式的东西),然后用给定的参数替换它。
一些使这更容易的额外提示: 对即将发布的每个版本进行分支,我们现在有 5.0 用于生产(但它仍然是为了修补目的而构建的),5.1 是分支并在此时进行测试,主干包含5.2。
每次您需要发布修补程序时,更新 TeamCity 中的版本号,以及对构建脚本的调用(这也应该在 TeamCity 中完成)。
F.e.目前我们有以下项目:
- 发布 5.0.5(需要 /v=5.0.5)
- 5.1 版(需要 /v=5.1)
- 主干(需要 /v=5.2)
将其与在 SQL 脚本前加上版本号和自动数据库生成脚本相结合,该脚本会为每个版本创建一个大事务脚本(例如:'DPL_Updates_for_5.1.sql')。
当我们将一个版本投入生产时,我们从 TeamCity 的分支中获取工件,特定于该版本的数据库脚本会自动添加到 zip 文件中,并且我们会提供该文件(以及发行说明, 等等) 到我们的应用程序管理部门。
【解决方案3】:
有一个描述版本的本地数据库。然后编写一个脚本来构建一个发布,这可以验证存储在你的源中的版本号,如果发布成功则更新数据库。您甚至可以获得 Joel 测试点!
【解决方案4】:
svn 和 php 我用的不多。但是我看到有些人使用文档将 svn 版本直接集成到 php 文件中,例如 /** @version $SVN */
因此,当我们从主干中签出时,我们的分支会创建一个发布版本。
文件包含/显示当前版本。
【解决方案5】:
使用 phing 构建您的发布包。它确实有非常灵活的转换,它甚至可以自动读取SVN最新版本。