理解通过 Git 差异查看 xfuncname

10
我想知道git diff如何准确应用提供给xfuncname的表达式,并且是否可能将寻找块标题文本的搜索委托给另一个程序。

背景:我想更改git diff的xfuncname设置,以显示针对xml文件的可用输出。例如,一个看起来像这样的xml文件:

<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>

理想情况下,带有修改后的块头的输出应该如下所示

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

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

由于 RE2 显然不支持反向引用lookahead,我不确定我尝试的方法是否能够实现我的目的。有没有一种方法可以指定一个自定义程序/脚本,以便接收差异作为输入,这样我就可以自己指定块标题?


1
虽然这个想法听起来很有趣,但是用正则表达式解析XPath非常难以实现,特别是如果不支持lookaround。我担心你不能用xfuncname来做到这一点。 - Thomas Ayoub
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接