Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7 开始为Mercurial编写钩子的最佳方式是什么?_Windows 7_Mercurial_Hook - Fatal编程技术网

Windows 7 开始为Mercurial编写钩子的最佳方式是什么?

Windows 7 开始为Mercurial编写钩子的最佳方式是什么?,windows-7,mercurial,hook,Windows 7,Mercurial,Hook,我是Mercurial的新手,希望编写一些钩子来防止某些分支之间的合并。我正在寻找一种贯穿整个循环的教程 我已经看过了和这些,但我仍然觉得它令人困惑。比起阅读手册或类似内容,我更擅长通过教程/研讨会进行学习 我可以理解示例代码是如何工作的,但是如何让Mercurial识别函数呢 e、 g.) 我已经写了这篇文章,但我不明白如何让Mercurial在提交之前运行代码 def is_bad_branch_name(ui, repo, **kwargs): """ Checks tha

我是Mercurial的新手,希望编写一些钩子来防止某些分支之间的合并。我正在寻找一种贯穿整个循环的教程

我已经看过了和这些,但我仍然觉得它令人困惑。比起阅读手册或类似内容,我更擅长通过教程/研讨会进行学习

我可以理解示例代码是如何工作的,但是如何让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
def是不良分支机构名称(ui、回购、**kwargs):
"""
检查是否始终在命名分支上执行提交。
此函数强制执行Projectplace的分支约定。
@返回:如果分支名称无效,则为True。
@返回类型:布尔型
"""
分支机构=回购[无]。分支机构()
分支机构名称=r'(TT | AZ)(-d)(+:)[\s\w]*'
可接受的分支名称=重新编译(分支名称)
如果不可接受\u分支\u名称。匹配(分支):
ui.warn('无效的分支名称%r(使用-#:)\n')
返回真值
返回错误

让我指出显而易见的原因,因为我是一个绝望的代表

“在BoS的书中

如果你想不出一个你想要的钩子,请问一个更具体的问题


钓得开心

我现在已经成功地编写并使用了钩子。我发现缺少在线文档,但这也可能是我的问题。我所做的是研究示例代码和一些试错编码,并在这里提出一些问题。:)

编辑 作为将来的参考,这是Mercurial在您的hgrc中需要在提交之前运行上述代码的那种代码。这是一个用于钩子和代码路径的部分

[hooks]
precommit.bad_branch_name = python:/path/to/hook/hook.py:is_bad_branch_name

对于要挂接的每个函数,都需要一行代码。“预提交”意味着钩子将在执行提交之前运行。这样,如果钩子返回True,提交将被中止。“bad_branch_name”只是一个标识符,您可以在那里键入任何内容。

您是否已经开始尝试,还是仍在寻找最佳的切入方式?我已经编写了一些代码,但未能让Mercurial识别它。我会尽快看第10章,看看这是否有帮助。嗯,这似乎是MdaG提出的一个相当有效的问题。为什么这么否定?对不起,我是说我的答案是针对rw的,不是问题。虽然很高兴知道你已经解决了你的问题,但如果你能在这里发布一些你所做的事情,那就更好了。这样,当其他人有同样的问题,并最终来到这里,他们可能能够解决任何不适合他们的问题。