summaryrefslogtreecommitdiff
path: root/git-debpush
diff options
context:
space:
mode:
Diffstat (limited to 'git-debpush')
-rwxr-xr-xgit-debpush35
1 files changed, 35 insertions, 0 deletions
diff --git a/git-debpush b/git-debpush
index dee358b..1bfb093 100755
--- a/git-debpush
+++ b/git-debpush
@@ -79,6 +79,11 @@ fail_check () {
fi
}
+fail_check_upstream_nonidentical () {
+ fail_check upstream-nonidentical \
+ "the upstream source in tag $upstream_tag is not identical to the upstream source in $branch"
+}
+
find_last_tag () {
local prefix=$1
@@ -92,6 +97,23 @@ find_last_tag () {
set -o pipefail
}
+check_treesame () {
+ local first=$1
+ local second=$2
+ shift 2
+
+ set +e
+ git diff --exit-code "$first".."$second" -- . "$@"
+ git_diff_rc=$?
+ set -e
+
+ if [ $git_diff_rc -le 1 ]; then
+ return $git_diff_rc
+ else
+ fail "'git diff' exited with unexpected code $git_diff_rc"
+ fi
+}
+
# **** Parse command line ****
getopt=$(getopt -s bash -o 'nfu:' \
@@ -313,6 +335,19 @@ if ! [ "x$upstream_tag" = "x" ] \
"upstream tag $upstream_tag is not an ancestor of $branch; probably a mistake"
fi
+# ---- Upstream tag tree nonidentical
+
+case "$quilt_mode" in
+ gbp)
+ check_treesame "$upstream_tag" "$branch" ':!debian' ':!**.gitignore' \
+ || fail_check_upstream_nonidentical
+ ;;
+ unapplied)
+ check_treesame "$upstream_tag" "$branch" ':!debian' \
+ || fail_check_upstream_nonidentical
+ ;;
+esac
+
# ---- Summary
if $failed_check; then