summaryrefslogtreecommitdiff
path: root/git-debpush
diff options
context:
space:
mode:
Diffstat (limited to 'git-debpush')
-rwxr-xr-xgit-debpush48
1 files changed, 36 insertions, 12 deletions
diff --git a/git-debpush b/git-debpush
index e2ea2b6..dee358b 100755
--- a/git-debpush
+++ b/git-debpush
@@ -65,10 +65,16 @@ get_file_from_ref () {
failed_check=false
fail_check () {
- if $force; then
- echo >&2 "$us: warning: $*"
+ local check=$1; shift
+ local check_is_forced=false
+
+ case ",$force," in
+ *",$check,"*) check_is_forced=true ;;
+ esac
+ if $force_all || $check_is_forced; then
+ echo >&2 "$us: warning: $* ('$check' check)"
else
- echo >&2 "$us: $*"
+ echo >&2 "$us: $* ('$check' check)"
failed_check=true
fi
}
@@ -89,7 +95,7 @@ find_last_tag () {
# **** Parse command line ****
getopt=$(getopt -s bash -o 'nfu:' \
- -l 'no-push,force,branch:,remote:,distro:,upstream:,quilt:,gbp,dpm,\
+ -l 'no-push,force::,branch:,remote:,distro:,upstream:,quilt:,gbp,dpm,\
baredebian,baredebian+git,baredebian+tarball' \
-n "$us" -- "$@")
eval "set - $getopt"
@@ -97,7 +103,8 @@ set -e$DGIT_TEST_DEBPUSH_DEBUG
git_tag_opts=()
pushing=true
-force=false
+force_all=false
+force=""
distro=debian
quilt_mode=""
branch="HEAD"
@@ -106,7 +113,7 @@ while true; do
case "$1" in
'-n'|'--no-push') pushing=false; shift; continue ;;
'-u') git_tag_opts+=(-u "$2"); shift 2; continue ;;
- '-f'|'--force') force=true; shift; continue ;;
+ '-f') force_all=true; shift; continue ;;
'--gbp') quilt_mode='gbp'; shift; continue ;;
'--dpm') quilt_mode='dpm'; shift; continue ;;
'--branch') branch=$2; shift 2; continue ;;
@@ -121,6 +128,18 @@ while true; do
fail "--baredebian+tarball quilt mode not supported"
;;
+ # we require the long form of the option to skip individual
+ # checks, not permitting `-f check`, to avoid problems if we
+ # later want to introduce positional args
+ '--force')
+ case "$2" in
+ '')
+ force_all=true ;;
+ *)
+ force="$force,$2" ;;
+ esac
+ shift 2; continue ;;
+
'--') shift; break ;;
*) badusage "unknown option $1" ;;
esac
@@ -252,7 +271,7 @@ fi
# ---- UNRELEASED suite
if [ "$target" = "UNRELEASED" ]; then
- fail_check "UNRELEASED changelog"
+ fail_check unreleased "UNRELEASED changelog"
fi
# ---- Pushing dgit view to maintainer view
@@ -263,7 +282,7 @@ if ! [ "x$last_debian_tag" = "x" ] && ! [ "x$last_archive_tag" = "x" ]; then
if ! [ "$last_debian_tag_c" = "$last_archive_tag_c" ] \
&& git merge-base --is-ancestor \
"$last_debian_tag" "$last_archive_tag"; then
- fail_check \
+ fail_check dgit-view \
"looks like you might be trying to push the dgit view to the maintainer branch?"
fi
fi
@@ -280,7 +299,7 @@ if ! [ "x$last_debian_tag" = "x" ]; then
trap - EXIT
if ! [ "$prev_target" = "$target" ] && ! [ "$target" = "UNRELEASED" ]; then
- fail_check \
+ fail_check suite \
"last upload targeted $prev_target, now targeting $target; might be a mistake?"
fi
fi
@@ -290,14 +309,19 @@ fi
if ! [ "x$upstream_tag" = "x" ] \
&& ! git merge-base --is-ancestor "$upstream_tag" "$branch" \
&& ! [ "$quilt_mode" = "baredebian" ]; then
- fail_check \
+ fail_check upstream-nonancestor \
"upstream tag $upstream_tag is not an ancestor of $branch; probably a mistake"
fi
# ---- Summary
-if ! $force && $failed_check; then
- fail "some checks failed; you can override with --force"
+if $failed_check; then
+ # We don't mention the --force=check options here as those are
+ # mainly for use by scripts, or when you already know what check
+ # is going to fail before you invoke git-debpush. Keep the
+ # script's terminal output as simple as possible. No "see the
+ # manpage"!
+ fail "some check(s) failed; you can pass --force to ignore them"
fi
# **** Create the git tag ****