【问题标题】: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 文件中,并且我们会提供该文件(以及发行说明, 等等) 到我们的应用程序管理部门。

    【讨论】:

      【解决方案2】:

      您可以使用像 Code::Block's AutoVersioning plugin 这样的插件,它会自动增加内部版本号(和/或版本号)。

      或者(如果你有太多时间)你可以创建一个 SVN 脚本来限制具有相同版本号的提交 ^^。

      【讨论】:

        【解决方案3】:

        有一个描述版本的本地数据库。然后编写一个脚本来构建一个发布,这可以验证存储在你的源中的版本号,如果发布成功则更新数据库。您甚至可以获得 Joel 测试点!

        【讨论】:

          【解决方案4】:

          svn 和 php 我用的不多。但是我看到有些人使用文档将 svn 版本直接集成到 php 文件中,例如 /** @version $SVN */ 因此,当我们从主干中签出时,我们的分支会创建一个发布版本。 文件包含/显示当前版本。

          【讨论】:

            【解决方案5】:

            使用 phing 构建您的发布包。它确实有非常灵活的转换,它甚至可以自动读取SVN最新版本。

            【讨论】:

              【解决方案6】:

              制作一个清单。每次发布时都遵循它。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-02-17
                • 2016-03-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-08-22
                • 1970-01-01
                相关资源
                最近更新 更多