我是Mercurial的新手,想要编写一些钩子来防止某些分支之间的合并等。我正在寻找贯穿整个循环的某种教程。
我查看了API和这些examples,但我仍然感到困惑。通过阅读教程/研讨会,我总是比阅读手册或类似内容更好。
我可以理解示例代码是如何工作的,但是如何让Mercurial识别这些函数呢?
e.g。) 我写过这个,但我不明白如何让Mercurial在提交之前运行代码。
def is_bad_branch_name(ui, repo, **kwargs):
"""
Checks that a commit is always done on a named branch.
This function enforces Projectplace's branching convention.
@return: True if the branch name is invalid.
@returntype: Boolean
"""
branch = repo[None].branch()
branch_names = r'(TT|AZ)(-#)(\d)+(:)[\s\w]*'
acceptable_branch_names = re.compile(branch_names)
if not acceptable_branch_names.match(branch):
ui.warn('invalid branch name %r (use <TT|AZ>-#<number>: <description>)\n')
return True
return False
答案 0 :(得分:1)
让我指出显而易见的唯一原因是我是一个绝望的代表:
“Chapter 10. Handling repository events with hooks”在BoS的明确的hg书中。
如果您无法找到想要的特定挂钩,请提出更具体的问题。
快乐的挂钩!
答案 1 :(得分:1)
我已经成功编写并使用了钩子。我发现在线文档缺乏,但这可能也是我的问题。我所做的是研究示例代码和一些试错编码以及在这里提出一些问题。 :)
修改的 为了将来参考,这是Mercurial在提交之前在hgrc中运行上述代码所需的那种行。这是钩子和代码路径的一个部分。
[hooks]
precommit.bad_branch_name = python:/path/to/hook/hook.py:is_bad_branch_name
您想要挂钩的每个功能都需要一行。 “precommit”表示挂钩将在执行提交之前运行。这样,如果挂钩返回True,则将中止提交。 “bad_branch_name”只是一个标识符,你可以在那里输入任何内容。