Вы можете перечислить все измененные функции в ревизии, используя фильтры git textconv.Идея состоит в том, чтобы создать специальный фильтр, который перечисляет все функции / методы, а для всех функций - контрольную сумму тела.Это дает такой вид отфильтрованного текстового представления:
m() 12
bar() 42
(здесь m()
- сигнатура функции, 12
- контрольная сумма ее тела))
Когда git diff
используетэтот фильтр для двух версий до и после ревизии:
- , если добавлена функция, в diff добавляется строка
Пример: добавляется foo
m() 12
+ foo() 24
bar() 42
- если функция изменена, контрольная сумма изменяется, и в diff обновляется строка
Пример: тело foo изменяется
m() 12
- foo() 23
+ foo() 24
bar() 42
Как это сделать?
- Создать фильтр: java-ls-method.groovy - реализация такого фильтра с использованием Groovy и Spoon
- Зарегистрируйте этот фильтр в git:
git config diff.java-ls-methods.textconv /home/path/to/java-ls-methods.groovy
- Свяжите этот фильтр с файлами Java:
echo "*.java diff=java-ls-methods" >> .gitattributes
- Создайте diff:
git diff
(diff против последнегоcommit) или git diff master
(diff против другой ветви) - Как только ваш diff закончен, прокомментируйте строку в
.gitattributes
, чтобы вернуться к обычному diff
Кредиты: решение на основе https://stackoverflow.com/a/16929266