gpt4 book ai didi

用于设置标签名称策略的 Mercurial 钩子(Hook)

转载 作者:行者123 更新时间:2023-12-04 06:19:41 29 4
gpt4 key购买 nike

我编写(进程中)钩子(Hook)以防止在本地添加 BAD 标记名称:

.hg/hgrc :

pretag.badtagname = python:.hg/hgcheck.py:localbadtag

.hg/hgcheck.py :

goodtag_re = r'(ver-\d+\.\d+\.\d+|tip)$'
def localbadtag(ui, repo, hooktype, node, **kwargs):
断言(钩子(Hook)类型 == 'pretag')
re_ = re.compile(goodtag_re)
如果不是 re_.match(tag):
ui.warn('无效的标签名 "%s".\n' % 标签)
ui.warn('使用tip之一,ver-xx.xx.xx\n')
返回真
返回假

如何检查 pretxnchangegroup 钩?

我尝试编写以下代码:

def pushbadtag(ui, repo, hooktype, node, **kwargs):
断言(钩子(Hook)类型 == 'pretxnchangegroup')
re_ = re.compile(goodtag_re)
对于 xrange 中的 rev(repo[node].rev(), len(repo)):
ui.warn('rev: %d\n' % rev)
对于 repo[rev].tags() 中的标签:
ui.warn('标签:' + 标签 + '\n')
如果不是 re_.match(tag):
ui.warn('无效的标签名 "%s"for rev: "%s".\n' % (tag, rev))
ui.warn('使用tip之一,ver-xx.xx.xx\n')
返回真
返回假

但是当我(使用上 pretxnchangegroup 启用钩子(Hook)插入 repo 时:

$ hg 标签 gg
$ hg推-f
推送到/cygdrive/d/home/tmp/hg/good
寻找变化
添加变更集
添加 list
添加文件更改
添加了 1 个变更集,对 1 个文件进行了 1 个更改(+1 个头)
转:35
标签: 小费

你可以看到 rev.tags() 不返回 gg 标签!

最佳答案

*解释的问题:为什么不 rev.tags()返回 gg标签?
rev.tags()不返回 gg标记,因为您推送的修订版上没有该标记。默认 hg tag将标记工作目录的父级。新的变更集仅添加到 .hgtags文件。该标签已添加到两个 repos 已经拥有的变更集中。尝试进行一些更改并提交,然后对其进行标记,以便您推送 2 个变更集,其中一个将具有错误标记。

此外,由于标记的工作方式,您实际上不会知道哪个修订版上有标记。新的变更集可能会在更早的变更集上添加标签。查看是否有人推送了错误标签的更好方法可能是检查新变更集对 .hgtags 所做的任何添加。 .

如果您将更改解析为 .hgtags ,您需要正确解析这些更改,以免从删除标签的条目中得到误报。您还需要收集坏标签的完整列表,而不是在第一次发现时中断。您可能会发现添加标签 gg 的行到变更集,但稍后是删除它的 2 行,这也应该删除您的 find 并允许钩子(Hook)成功通过,因为这意味着用户在推送之前删除了他们的错误标签。

关于用于设置标签名称策略的 Mercurial 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6746881/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com