Программно проверить, обновляет ли коммит подмодуль - PullRequest
2 голосов
/ 03 апреля 2019

Существует ли простой способ использовать сантехнику Git для программной проверки, был ли обновлен подмодуль в некотором коммите (например, HEAD). (Вам не важно, какой именно, вы просто хотите знать, что подмодуль изменился)

Ответы [ 2 ]

3 голосов
/ 03 апреля 2019

Чтобы проверить изменения комита в отношении его родителей с помощью основных команд, используйте

git diff-tree -m -r $commit     # all parents
git diff-tree -r $commit{~,}    # first parent

Записи субмодулей имеют тип 16,

git diff-tree -m -r $commit | awk '$1":"$2~/:16/'

напечатает все измененные записи подмодуля в $ commit.

(правка: там была опция -c по ошибке, которая показывает только разрешение конфликтов, а не то, что нужно). (edit 2: gaak! Тип подмодуля - 16, а не 04. «Я знал это». Кроме того, для сравнения со всеми родителями используйте -m)

0 голосов
/ 03 апреля 2019

Я не знаю встроенного способа, но это делает работу:

git diff $COMMIT~ $COMMIT | grep -qE '^(-|\+)Subproject commit'
echo $?
# Return code 0 if commit contains changes to a subproject
# Return code 1 if commit contains no changes to a subproject
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...