mercurial - 有用的Mercurial钩子

  显示原文与译文双语对照的内容

你遇到了哪些有用的Mercurial钩子?

Mercurial手册中有几个示例挂钩:

我个人觉得这些非常有用。 我想看看:

  • 拒绝多个磁头
  • 使用合并拒绝 Changegroups ( 如果你想让用户总是有问题的话)
    • 使用合并拒绝 Changegroups,除非提交消息有特殊字符串
  • 自动链接到Fogbugz或者 TFS ( 类似于bugzilla钩子)
  • 黑名单,将拒绝具有某些变更集ids的推送。 ( 如果使用MQ从其他克隆中提取更改,则有用)

请坚持使用有bat和bash的钩子,或者 python 。 这样,*nix 和 Windows 用户都可以使用它们。

时间: 原作者:

我最喜欢的正式仓库钩子是拒绝多个头的那个。 当你有一个 持续集成 系统需要一个post-merge提示来自动构建时,它是很棒的。

这里有几个例子: MercurialWiki: TipsAndTricks - 阻止创建多个头部的

我使用来自netbeans的这个版本:


# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
#
# To forbid pushes which creates two or more headss
#
# [hooks]
# pretxnchangegroup.forbid_2heads = python:forbid2_head.forbid_2heads

from mercurial import ui
from mercurial.i18n import gettext as _

def forbid_2heads(ui, repo, hooktype, node, **kwargs):
 if len(repo.heads())> 1:
 ui.warn(_('Trying to push more than one head, try run"hg merge" before it.n'))
 return True

原作者:

我刚刚创建了一个小的pretxncommit钩子,它检查制表符和尾随空格,并将它报告给用户。 它还提供了一个命令来清理那些文件( 或者所有文件) 。

查看 CheckFiles web 扩展。

原作者:

另一个好钩子是这个。 它允许多个头部,但只有在不同的分支中。

每个分支的 Single头


def hook(ui, repo, **kwargs):
 for b in repo.branchtags():
 if len(repo.branchheads(b))> 1:
 print"Two heads detected on branch '%s'" % b
 print"Only one head per branch is allowed!"
 return 1
 return 0

原作者:
...