【问题标题】:Understanding xfuncname by git diff通过 git diff 理解 xfuncname
【发布时间】:2018-11-14 18:44:42
【问题描述】:

我想知道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 将正则表达式应用于文件的部分之前的差异,采用 last 匹配,然后 first捕获组;它使用m 标志。这样描述合适吗?

由于 RE2 显然既不支持 backreferences 也不支持 lookaheads,我不确定我想要做的事情是否可以通过这种方法实现。有没有办法指定一个接收差异作为输入的自定义程序/脚本,这样我就可以自己指定一个大块头?

【问题讨论】:

  • 虽然这个想法看起来很有趣,但是用正则表达式解析 XPath 是很难实现的,而且如果不支持环视。我担心你不能用xfuncname

标签: regex git git-diff re2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 2018-09-18
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多