gpt4 book ai didi

mercurial - 检测 mercurial 中的新行

转载 作者:行者123 更新时间:2023-12-04 01:45:04 25 4
gpt4 key购买 nike

我们正在研究添加预提交 Hook ,以检测编码标准是否符合我们公司的政策。我们不想检测遗留代码,只检测添加的新行。

在 git 中,可以检测到在提交之前添加的行号,因为在调用 git blame 时,它​​们以哈希号 00000000000 显示。

在 mercurial 中,新行不会显示在 hg blame/annotate 中。是否有另一种机制可以解决这个问题?使用 hg diff 执行此操作真的很痛苦。

最佳答案

编辑您的存储库 (hg config --local) 或您的用户配置 (hg config --edit) 并启用预提交 Hook (hg帮助 config.hooks):

[hooks]
pre-commit=/path/to/check-added-lines

在预提交 Hook 中,使用 wdir() revset 和 modified() + added() 文件集运行以下版本的注释命令:( hg help revsetshg help filesets):

hg ann -r 'wdir()' 'set:modified() + added()'

这将为您提供注释输出,其中刚刚添加的行(即仅存在于您的工作目录中的行)在修订号后有一个 +。所以在 check-added-lines 中你可以做一些事情,例如,

#!/bin/bash
IFS=$'\n'
for line in $(hg ann -r 'wdir()' 'set:modified() + added()' | grep '^[0-9]*+' | sed 's/^[0-9]\++ *: //'); do
if ! run_checker "$line"; then
exit 1
fi
done
exit 0

使用您选择的 run_checker 程序。

虽然我不愿意推荐这个,但如果你愿意容忍错误和潜在的 API 破坏(Mercurial 认为它的行为没有明确记录为实验性的,它的 CLI 和它的标准输出是 API,我们试图保持非常稳定),您可能还对新的和实验性的修复扩展感兴趣,我认为它是根据您的用例构建的 (hg help --extension fix)。

关于mercurial - 检测 mercurial 中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647693/

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