2

是否有内置方式(或简单脚本)不允许我检查是否有任何子模块修改了文件?就目前而言,我有无用的提交,因为我无法返回子模块的状态。

4

2 回答 2

3

这看起来像预提交钩子“子模块卫生脚本”用于:
如果子模块有待处理的更改,则阻止提交。
(另见补丁/脚本

该脚本是 4 年前编写的,因此 git diff 现在可能包含一种更简单的检测“脏”子模块的方法。

于 2012-09-29T00:07:46.810 回答
2

感谢 VonC 解释我需要做什么。对不起,我不知道 Bash,所以这里是 Ruby 版本。完美运行(到目前为止,在所有情况下都使用 git 版本 1.7.9.4 进行了测试):

#!/usr/bin/env ruby
# http://stackoverflow.com/questions/12648585/git-should-not-checkin-if-submodule-has-modified-files
# October 1, 2012
# call this file pre-commit, make it executable and put it in .git/hooks
puts "Git pre-commit hook by Dan Rosenstark (yar)"
gitDiff = `git diff`
gitDiffWithSubmodules = `git diff --ignore-submodules`
if (gitDiff.length == gitDiffWithSubmodules.length)
  puts "Submodules are clean, going right ahead!"
else
  puts "One or more submodules are dirty, can't commit.'"
  exit 1
end
于 2012-10-01T23:27:16.200 回答