Show usage string for 'git get-tar-commit-id -h'
[gitweb.git] / git-request-pull.sh
index 4319e35c628efdd86745c560d2dfe306b180fb1b..630ceddf0356429f7ff71d280ee1056a2eb939c6 100755 (executable)
@@ -4,30 +4,75 @@
 # This file is licensed under the GPL v2, or a later version
 # at the discretion of Linus Torvalds.
 
-USAGE='<commit> <url> [<head>]'
-LONG_USAGE='Summarizes the changes since <commit> to the standard output,
-and includes <url> in the message generated.'
+USAGE='<start> <url> [<end>]'
+LONG_USAGE='Summarizes the changes between two commits to the standard output,
+and includes the given URL in the generated summary.'
 SUBDIRECTORY_OK='Yes'
+OPTIONS_SPEC='git request-pull [options] start url [end]
+--
+p    show patch text as well
+'
+
 . git-sh-setup
+. git-parse-remote
+
+GIT_PAGER=
+export GIT_PAGER
+
+patch=
+while  case "$#" in 0) break ;; esac
+do
+       case "$1" in
+       -p)
+               patch=-p ;;
+       --)
+               shift; break ;;
+       -*)
+               usage ;;
+       *)
+               break ;;
+       esac
+       shift
+done
 
-revision=$1
+base=$1
 url=$2
 head=${3-HEAD}
 
-[ "$revision" ] || usage
+[ "$base" ] || usage
 [ "$url" ] || usage
 
-baserev=`git-rev-parse --verify "$revision"^0` &&
-headrev=`git-rev-parse --verify "$head"^0` || exit
+baserev=`git rev-parse --verify "$base"^0` &&
+headrev=`git rev-parse --verify "$head"^0` || exit
+
+merge_base=`git merge-base $baserev $headrev` ||
+die "fatal: No commits in common between $base and $head"
+
+branch=$(git ls-remote "$url" \
+       | sed -n -e "/^$headrev refs.heads./{
+               s/^.*   refs.heads.//
+               p
+               q
+       }")
+url=$(get_remote_url "$url")
+if [ -z "$branch" ]; then
+       echo "warn: No branch of $url is at:" >&2
+       git log --max-count=1 --pretty='tformat:warn:   %h: %s' $headrev >&2
+       echo "warn: Are you sure you pushed $head there?" >&2
+       echo >&2
+       echo >&2
+       branch=..BRANCH.NOT.VERIFIED..
+       status=1
+fi
 
 echo "The following changes since commit $baserev:"
-git log --max-count=1 --pretty=short "$baserev" |
-git-shortlog | sed -e 's/^\(.\)/  \1/'
+git shortlog --max-count=1 $baserev | sed -e 's/^\(.\)/  \1/'
 
-echo "are found in the git repository at:" 
+echo "are available in the git repository at:"
 echo
-echo "  $url"
+echo "  $url $branch"
 echo
 
-git log  $baserev..$headrev | git-shortlog ;
-git diff --stat --summary $baserev..$headrev
+git shortlog ^$baserev $headrev
+git diff -M --stat --summary $patch $merge_base..$headrev
+exit $status