【问题标题】:Automatically Tag changesets when commit or pushed to kiln提交或推送到窑时自动标记变更集
【发布时间】:2017-06-20 16:46:03
【问题描述】:

我想知道是否有办法在本地提交或推送到 kiln 存储库时自动标记变更集。

我希望每个变更集都有一个带有版本/内部版本号的标签。我计划将我的版本/内部版本号存储在数据库中,并希望让脚本从数据库中检索此值并将标签添加到变更集。是否可以在推送到 kiln 存储库时自动调用脚本以作为提交后事件或推送后事件来执行此操作?

我也愿意接受任何其他方法来实现每次提交/推送时的自动标记。

【问题讨论】:

标签: mercurial tags fogbugz kiln


【解决方案1】:

与其为每个变更集创建标签,不如尝试以下方法之一:

  • 使用变更集哈希作为您的标识符?
  • 使用从日志生成的字符串作为您的标识符(见下文)?

可以使用以下命令从日志中生成描述性字符串:

hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'

结果采用以下形式:

<latest tag>-<# changesets since latest tag>-<changeset hash>

例如,在 Mercurial 存储库的本地克隆上,这会生成:

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7

这告诉我,自标记 1.7.2 以来有两次提交,当前变更集哈希是 5e51254a。

在 Mercurial 中,每个标签都会创建一个新的变更集。因此,如果您标记每个提交,您会将 repo 中的变更集数量增加一倍。您应该使用内置工具(如上所述)而不是尝试重新创建轮子。

【讨论】:

  • +1 有趣的方法!我会使用{short} 而不是{node},以保持版本描述符的长度易于管理。
  • hg log -r tip ... 可能更好。不幸的是,{short} 在 1.4.3 中似乎不起作用
【解决方案2】:

我想知道是否有办法在本地提交或推送到 kiln 存储库时自动标记变更集。

你总是可以写一个 post commit hook 来做到这一点。

我希望每个变更集都有一个带有版本/内部版本号的标签。

标签有助于识别提交历史中的重要时刻。为这些时刻提供一个与产品开发相关的有意义的名称,如 1.0 版、1.3 版等。

如果您要为每个更改集制作一个标签,那么您只会增加噪音水平。您仍然需要将重要标签的信息保存在某个地方。

将标签视为有关变更集的元信息。并非所有这些都值得同等重视。并非所有这些都需要元信息。

只有在谨慎使用标签时,查看标签才能为您提供有意义的历史记录。

挂机

见:

示例:在通过 push、pull 或 unbundle 添加更改组后运行。我用它来触发自动构建。

[hooks]
changegroup.yyyy = command 

同样,还有 post-commit 、 post-push 钩子

[hooks]
post-<command> =  command

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 2012-02-03
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2023-04-10
    • 2013-09-04
    相关资源
    最近更新 更多