我想知道
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,我不确定我尝试的方法是否能够实现我的目的。有没有一种方法可以指定一个自定义程序/脚本,以便接收差异作为输入,这样我就可以自己指定块标题?
xfuncname
来做到这一点。 - Thomas Ayoub