2

这是我的问题:

我有一个远程 mercurial 存储库,其中将设置传入或更改组的钩子,并且我在不同的服务器上设置了 ReviewBoard。这个想法是在从开发人员推送到远程存储库时自动生成审查请求票证。当然,我需要一个调用 post-review 的钩子,该钩子也使用使用 mercurial api (ctx.user()) 提取的 submit-as 用户,否则所有的评论请求票都将以用户的名义将远程存储库连接到 Reviewboard 服务器。

我的主要困境实际上是开始修订和停止修订,如果我使用传入,我将获得所有变更集节点,但当然每次都会调用挂钩,因此每次调用之间都不会保留状态。另一方面,如果我使用变更组,我只会得到第一个变更集,我无法比较。为了比较,我需要一种方法来保留以前的提示,以便基本上将其发送到后期审查:

post-review --revision-range=previoustip:newtip --submit-as=ctx.user() 

如果您对如何解决问题有任何想法,我会很高兴。我显然正在用python编写钩子。

4

1 回答 1

7

不确定这是否是您所需要的,但这是我在几乎相同的情况下用于执行提交消息检查的东西,它必须检查每个更改并根据用户验证信息。以同样的方式,我需要检查更改列表所针对的用户,而不是“推送”用户。在循环通过更改组中的更改时,应该很容易做一些事情,例如为特定用户构建更改集以及“块”中的开始和结束修订。

返回是因为它被用作 pretxnchangegroup 钩子

def checkAllCommitMessage(ui, repo, node, **kwargs):
    """    
    Checks all inbound changeset messages from a push for adherence to the commit message rules.
    """

    # for each change being submitted
    # get all the details, and call the trigger
    fail = False

    for rev in xrange(repo[node].rev(), len(repo)):
        # get context (change)
        ctx = repo[rev]

        # user who commited the change (NOT necessarily the one who is doing push)
        user = ctx.user()

        # do the hook stuff here...
        # set fail to True if something goes wrong

    return fail
于 2011-12-23T10:53:26.260 回答