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>
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"