mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
61 lines
1.5 KiB
Plaintext
61 lines
1.5 KiB
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
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
|
||
|
echo $submods | cut -d ' ' -f 6 | sed 's/^/ /g' 1>&2
|
||
|
cat <<EOF 1>&2
|
||
|
|
||
|
Submodule commits are not allowed. Please run:
|
||
|
|
||
|
git status --ignore-submodules=dirty
|
||
|
|
||
|
and/or:
|
||
|
|
||
|
git diff-index --cached --ignore-submodules=dirty HEAD
|
||
|
|
||
|
... to see what's in your index.
|
||
|
|
||
|
If you're really and truly trying to roll the version of a submodule, you should
|
||
|
commit the new version to DEPS, instead.
|
||
|
EOF
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
gitmodules_diff() {
|
||
|
git diff-index --cached "$1" .gitmodules
|
||
|
}
|
||
|
|
||
|
if [ "$(git ls-files .gitmodules)" ] && [ "$(gitmodules_diff $head_ref)" ]; then
|
||
|
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.
|
||
|
EOF
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
exit 0
|