summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2019-07-07 00:09:14 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2019-07-07 11:18:17 +0100
commit31ce46f54f9f8a6ead0105db68646277944b940d (patch)
tree86f52b7246b575ffb459a340e4c069ec355e15f0
parente421140af47f0d64e018100b91b79c48fe83f729 (diff)
git-debpush: Defend against git-deborig #931509
Without this, when git-deborig fails and #931509 isn't fixed, git-debpush will silently exit with a nonzero exit status which is very unfriendly. With this change it does something like this: git-debpush: git-deborig failed; maybe try git-debpush --upstream=TAG fatal: Invalid object name 'refs/tags/couldn't find any of the following tags'. It then exits status 127. This is obviously daft, but making this any better is even more complex. When git-deborig is fixed it will do this: couldn't find any of the following tags: 1.0, v1.0, upstream/1.0 tell me a tag or branch head to make an orig.tar from: git deborig --just-print '--version=1.0-1' COMMITTISH git-debpush: git-deborig failed; maybe try git-debpush --upstream=TAG which is still not brilliant but I guess it will do. The downside, if it is one, is that we lose git-deborig's original exit status. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk> Acked-by: Sean Whitton <spwhitton@spwhitton.name>
-rwxr-xr-xgit-debpush19
1 files changed, 17 insertions, 2 deletions
diff --git a/git-debpush b/git-debpush
index 5ffbd52..ae5f20f 100755
--- a/git-debpush
+++ b/git-debpush
@@ -216,8 +216,23 @@ esac
upstream_info=""
if $upstream; then
if [ "x$upstream_tag" = x ]; then
- upstream_tag=$(git deborig --just-print --version="$version" \
- | head -n1)
+ upstream_tag=$(
+ set +e
+ git deborig --just-print --version="$version" \
+ | head -n1
+ ps="${PIPESTATUS[*]}"
+ set -e
+ case "$ps" in
+ "0 0"|"141 0") ;; # ok or SIGPIPE
+ *" 0")
+ echo >&2 \
+ "$us: git-deborig failed; maybe try $us --upstream=TAG"
+ exit 0
+ ;;
+ *) exit 127; # presumably head will have complained
+ esac
+ )
+ if [ "x$upstream_tag" = x ]; then exit 127; fi
fi
upstream_committish=$(git rev-parse "refs/tags/${upstream_tag}"^{})
upstream_info=" upstream-tag=$upstream_tag upstream=$upstream_committish"