提交或推送到窑时自动标记变更集

mur*_*uge 2 tags fogbugz mercurial kiln

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

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

我也对任何其他方法都持开放态度,以便在每次提交/推送时实现自动标记.

Tim*_*gan 8

而不是为每个变更集创建标记,为什么不尝试以下之一:

  • 使用changeset hash作为标识符?
  • 使用从日志生成的字符串作为您的标识符(见下文)?

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

hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'
Run Code Online (Sandbox Code Playgroud)

结果采用以下形式:

<latest tag>-<# changesets since latest tag>-<changeset hash>
Run Code Online (Sandbox Code Playgroud)

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

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7
Run Code Online (Sandbox Code Playgroud)

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

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