regex - 通过 git diff 理解 xfuncname
问题描述
我想知道如何git diff
将提供给 xfuncname 的表达式准确地应用于结果,以及是否可以将大块标题文本的搜索委托给另一个程序。
上下文:我想更改我的 xfuncname 设置git diff
以显示 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 显然既不支持backreferences也不支持lookaheads,我不确定我想要做的事情是否可以通过这种方法实现。有没有办法指定一个接收差异作为输入的自定义程序/脚本,这样我就可以自己指定一个大块头?
解决方案
是的,您可以覆盖内部差异生成器。请参阅https://git-scm.com/docs/diff-configdiff.external
部分。