有没有一种简单的方法可以使用Git管道以编程方式检查子模块是否在某些提交(例如HEAD)中进行了更新。 (您不在乎哪个,您只想知道A子模块已更改)
答案 0 :(得分:3)
要使用核心命令对照其父项检查提交的更改,请使用
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
选项,该选项仅显示冲突解决方案,而不显示所需的内容)。
(编辑2:gaak!子模块类型为16,而不是04。“我知道”。此外,要与所有父母进行比较,请使用-m
)
答案 1 :(得分:0)
我不知道内置方法,但这可以完成工作:
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