Могу ли я проверить, что diff между двумя версиями файла содержит только новый префикс, который я добавил? - PullRequest
0 голосов
/ 21 ноября 2018

Фон

В качестве части работы по абстрагированию нескольких классов в один интерфейс мне пришлось изменить файл, который использует один из этих старых классов, чтобы теперь указывать на негополя интерфейса.

Файл ранее выглядел бы примерно так (например, упрощенно).

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_ в разных местах?

В этом масштабе легко увидеть с помощью инструмента сравнения, но файл достаточно большой, чтобы я не доверял, просто глядя на него.Мой источник управления используется git, но я рад использовать другие инструменты, если это необходимо.

В идеале, я бы тоже хотел игнорировать все виды пробелов.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я думаю, что следующее должно быть близко:

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

В первой строке вы делаете diff, который вы записываете в файл.
Вторая строка извлекает изменения на основе символов и удаляет«+».В конце она сортируется и сохраняются уникальные значения.Я применил приведенный выше код к вашему примеру и получил следующий результат:

Base_

Это работает даже с большим количеством файлов или файлов, которые были изменены в других папках.Вы все еще получаете ответ сразу, но в случае, если анализ занимает больше времени.

0 голосов
/ 21 ноября 2018

Как насчет этого?

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

Изменить на HEAD~0 Если вы еще не зафиксировали файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...