我可以检查文件的两个版本之间的差异是否仅包含我添加的新前缀?

Can I check that the diff between two versions of a file solely contains a new prefix that I've added?

背景

作为将一些 类 抽象到一个接口的部分工作,我不得不更改一个使用这些旧 类 之一的文件,现在将其指向接口字段.

以前的文件看起来像这样(例如经过简化)。

public class Foo{

    public string RetrieveValue(MyModel model)
    {
        return model.Area.Street.Flat;
    }

    public string RetrieveOtherValue(MyModel model)
    {
        return model.Area.Shop;
    }

}

但现在看起来像这样。

public class Foo{

    public string RetrieveValue(MyModel model)
    {
        return model.Base_Area.Base_Street.Base_Flat;
    }

    public string RetrieveOtherValue(MyModel model)
    {
        return model.Base_Area.Base_Shop;
    }

}

问题

我可以很容易地检查这里唯一的变化是在各个地方包含了 Base_ 吗?

使用 diff 工具可以很容易地看到这个比例,但文件足够大,我不相信只盯着它看。我使用的源代码管理是 git,但我很乐意在必要时使用其他工具。

理想情况下,我也想忽略各种空白。

这个怎么样?

diff <(git show HEAD~1:/path/to/file) <(sed 's/Base_//' /path/to/file)

更改为 HEAD~0 如果您还没有提交文件。

我认为以下内容应该接近:

git diff --word-diff-regex=. > changes.txt
grep -oP '\+[^\+]+\+' changes.txt | tr -d '\+' | sort -u

在第一行中,您创建了一个 diff,并将其写入文件。
第二行提取基于字符的更改并删除“+”。最后它被排序并保留唯一值。我将上面的代码应用于您的示例并得到以下结果:

Base_

这甚至适用于更多文件或在其他文件夹中更改的文件。您仍然可以立即得到答案 - 但以防万一,分析需要更多时间。