首页 > 解决方案 > 通过 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,我不确定我想要做的事情是否可以通过这种方法实现。有没有办法指定一个接收差异作为输入的自定义程序/脚本,这样我就可以自己指定一个大块头?

标签: regexgitgit-diffre2

解决方案


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


推荐阅读