Вы можете использовать git-diff
с параметром --dirstat
.
В вашем сценарии, скажем, у вас есть следующий коммит:
$ git diff --name-status HEAD~1
M subtool/file1
M subtool/file2
M subtool3/file1
Будет выдан следующий вывод:
$ git diff --dirstat=files,0 HEAD~1
66.6% subtool/
33.3% subtool3/
Обязательно добавьте ,0
, иначе git diff
по умолчанию будет показывать только каталоги с изменениями не менее 3%.Я также выбрал files
, так как это самый дешевый в вычислительном отношении вариант, и вы, похоже, не заботитесь о конкретных изменениях.
Если вы можете использовать sed
, вы можете избавиться от него.процентных значений (вам может потребоваться немного подправить регулярное выражение в соответствии с вашими потребностями):
$ git diff --dirstat=files,0 HEAD~1 | sed 's/^[ 0-9.]\+% //g'
subtool/
subtool3/