サブモジュールのいずれかがファイルを変更したかどうかをチェックインさせない組み込みの方法 (または単純なスクリプト) はありますか? 現状では、サブモジュールの状態に戻ることができないため、無駄なコミットがあります。
質問する
194 次
2 に答える
3
これは、pre-commitフック「サブモジュール衛生のためのスクリプト」の目的のように見え
ます。サブモジュールに保留中の変更がある場合にコミットを防止するためです。
(そのパッチ/スクリプトも参照してください)
そのスクリプトは4年前に作成されたため、おそらくgitdiffには「ダーティ」サブモジュールを検出するためのより簡単な方法が含まれています。
于 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 に答える