Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Unified Diff: build/git-hooks/pre-commit

Issue 192443006: git-hooks/pre-commit: Allow merging deps2submodules changes from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/git-hooks/pre-commit
diff --git a/build/git-hooks/pre-commit b/build/git-hooks/pre-commit
index a39be2202cef12427192d6ac174fe3dec4d7f52d..790e14ec8412cd5a954cb785e1bce78367e6813d 100755
--- a/build/git-hooks/pre-commit
+++ b/build/git-hooks/pre-commit
@@ -1,6 +1,28 @@
#!/bin/sh
-submods=$(git diff-index --cached --ignore-submodules=dirty HEAD | grep -e '^:160000' -e '^:...... 160000' | xargs)
+submodule_diff() {
+ if test -n "$2"; then
+ git diff-tree -r --ignore-submodules=dirty "$1" "$2" | grep -e '^:160000' -e '^:...... 160000' | xargs
+ else
+ git diff-index --cached --ignore-submodules=dirty "$1" | grep -e '^:160000' -e '^:...... 160000' | xargs
+ fi
+}
+
+if git rev-parse --verify --quiet --no-revs MERGE_HEAD; then
+ merge_base=$(git merge-base HEAD MERGE_HEAD)
+ if test -z "$(submodule_diff $merge_base HEAD)"; then
+ # Most up-to-date submodules are in MERGE_HEAD.
+ head_ref=MERGE_HEAD
+ else
+ # Most up-to-date submodules are in HEAD.
+ head_ref=HEAD
+ fi
+else
+ # No merge in progress. Submodules must match HEAD.
+ head_ref=HEAD
+fi
+
+submods=$(submodule_diff $head_ref)
if test "$submods"; then
echo "You are trying to commit changes to the following submodules:" 1>&2
echo 1>&2
@@ -23,8 +45,11 @@ EOF
exit 1
fi
-if [ -n "$(git ls-files .gitmodules)" ] &&
- [ -n "$(git diff-index --cached HEAD .gitmodules)" ]; then
+gitmodules_diff() {
+ git diff-index --cached "$1" .gitmodules
+}
+
+if test "$(git ls-files .gitmodules)" -a "$(gitmodules_diff $head_ref)"; then
Ami GONE FROM CHROMIUM 2014/04/04 18:07:13 This change undid the benefit of r257470 because t
spang 2014/04/04 18:14:02 My bad.
cat <<EOF 1>&2
You are trying to commit a change to .gitmodules. That is not allowed.
To make changes to submodule names/paths, edit DEPS.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698