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
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:' \
"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
Ignore the fact that the upstream tag is not an ancestor of the branch
to be tagged (skipping this check is implied by B<--quilt=baredebian>).
+=item B<upstream-nonidentical>
+
+Ignore any differences between the upstream source in the upstream tag
+and the upstream source in the branch to be tagged (this check is only
+run when using B<--quilt=gbp> or B<--quilt=unapplied>).
+
=item B<unreleased>
Permit upload to a suite called UNRELEASED.
git checkout -B master quilt-tip-2
+echo foo >bar
+git add bar
+git commit -m"corrupt the upstream source to test upstream-nonidentical check"
+
t-tagupl-settings
tagname=test-dummy/$v
+t-expect-fail "the upstream source in tag $upstreamtag is not identical to the upstream source in refs/heads/master" \
+t-tagupl-test --quilt=gbp --upstream=$upstreamtag
+
+git reset --hard HEAD~1
+
t-expect-fail "upstream tag $upstreamtag is not an ancestor of refs/heads/master" \
t-tagupl-test --quilt=gbp --upstream=$upstreamtag