2

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

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

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

4

2 回答 2

8

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

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

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

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 中的变更集数量增加一倍。您应该使用内置工具(如上所述)而不是尝试重新创建轮子。

于 2010-12-02T21:32:50.590 回答
1

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

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

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

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

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

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

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

上钩

看:

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

[hooks]
changegroup.yyyy = command 

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

[hooks]
post-<command> =  command
于 2010-12-02T21:33:19.567 回答