以编程方式检查提交是否更新了子模块

时间:2019-04-03 17:36:05

标签: git

有没有一种简单的方法可以使用Git管道以编程方式检查子模块是否在某些提交(例如HEAD)中进行了更新。 (您不在乎哪个,您只想知道A子模块已更改)

2 个答案:

答案 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