通过 git diff 了解 xfuncname

Understanding xfuncname by git diff

提问人:Talon 提问时间:6/5/2018 最后编辑:CinCoutTalon 更新时间:12/7/2022 访问量:704

问:

我想知道如何将提供给 xfuncname 的表达式准确地应用于结果,以及是否可以将对 hunk 标头文本的搜索委托给另一个程序。git diff

上下文:我想更改我的 xfuncname 设置以显示 xml 文件的可用输出。如下所示的示例 xml:git diff

<layer1-1>
</layer1-1>
<layer1-2>
    <layer2-1>
    </layer2-1>
    <layer2-2>
    </layer2-2>
    <layer2-3>
        <layer3-1>
            [...]
            changes
            [...]
        </layer3-1>
        <layer3-2>
        </layer3-2>
        <layer3-2>
        </layer3-2>
    </layer2-3>
</layer1-2>
<layer1-3>
</layer1-3>

理想情况下,带有修改后的 hunk 标头的输出将如下所示

@@ -15 +15 @@ <layer1-2><layer2-3><layer3-1>
[...]
-notchanged
+changed
[...]

我的观察表明,将正则表达式应用于差值之前的文件部分,获取最后一个匹配项,并从中获取第一个捕获组;它使用标志。这是一个合适的描述吗?git diffm

由于 RE2 显然既不支持反向引用也不支持前瞻,我不确定我尝试做的事情是否可以通过这种方法实现。有没有办法指定一个接收差异作为输入的自定义程序/脚本,以便我可以自己指定一个 hunk 标头?

正则表达式 git git-diff re2

评论

1赞 Thomas Ayoub 6/5/2018
虽然这个想法看起来很有趣,但使用正则表达式解析 XPath 是相当困难的,此外,如果不支持环视。恐怕你不能用xfuncname

答:

0赞 chaos 9/4/2020 #1

是的,您可以覆盖内部差异生成器。请参阅 https://git-scm.com/docs/diff-config 部分。diff.external