2010-12-02 105 views
2

我想知道是否有办法自动标记变更集,因为它是在本地提交或推送到窑库时提交的。当提交或推送到窑时自动标记变更集

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

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

+0

同样在窑StackExchange:http://kiln.stackexchange.com/questions/2602/automatically-tag-changesets当承诺或推送到窑 – tghw 2010-12-02 22:28:02

回答

8

而不是为每个变更标签,为什么不尝试以下操作之一:

  • 使用变更散列作为你的标识?
  • 使用从日志生成的字符串作为标识符(见下文)?

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

    结果采用以下形式::

甲描述字符串可以从日志使用该命令来产生

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

例如,在我的本地的水银回购的克隆,这生成:

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7 

这告诉我从标记1.7.2开始有两次提交,当前变更集的散列是5e51254a。

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

+0

+1有趣的方法!尽管如此,我会使用`{short}`而不是`{node}`来保持版本描述符的长度易于管理。 – 2010-12-03 11:19:47

1

我想知道是否有办法自动标记变更集,因为它是在本地提交或推送到窑库时提交的。

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

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

标签对识别提交历史记录中的重要时刻非常有用。为这些时刻提供一个与产品开发相关的有意义的名称,如版本1.0,版本1.3等。

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

将标记视为关于变更集的元信息。并不是所有这些都值得同样重要。并非所有人都需要这些元信息。

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

在钩

参见:

范例:运行AFTE已经通过推,拉或解捆添加了更改组。我用它来触发自动构建。

[hooks] 
changegroup.yyyy = command 

类似地,这里的post-commit,推后钩

[hooks] 
post-<command> = command