1#!/bin/sh -e 2# Copyright 2005, Ryan Anderson <ryan@michonline.com> 3# 4# This file is licensed under the GPL v2, or a later version 5# at the discretion of Linus Torvalds. 6 7USAGE='<start> <url> [<end>]' 8LONG_USAGE='Summarizes the changes between two commits to the standard output, 9and includes the given URL in the generated summary.' 10SUBDIRECTORY_OK='Yes' 11OPTIONS_SPEC='git request-pull [options] start url [end] 12-- 13p show patch text as well 14' 15 16. git-sh-setup 17. git-parse-remote 18 19GIT_PAGER= 20export GIT_PAGER 21 22patch= 23while case"$#"in0)break;;esac 24do 25case"$1"in 26-p) 27patch=-p;; 28--) 29shift;break;; 30-*) 31 usage ;; 32*) 33break;; 34esac 35shift 36done 37 38base=$1 39url=$2 40head=${3-HEAD} 41 42["$base"] || usage 43["$url"] || usage 44 45baserev=`git rev-parse --verify "$base"^0`&& 46headrev=`git rev-parse --verify "$head"^0`||exit 47 48merge_base=`git merge-base$baserev$headrev`|| 49die "fatal: No commits in common between$baseand$head" 50 51branch=$(git ls-remote"$url" \ 52|sed-n -e"/^$headrevrefs.heads./{ 53 s/^.* refs.heads.// 54 p 55 q 56 }") 57url=$(get_remote_url "$url") 58if[-z"$branch"];then 59echo"warn: No branch of$urlis at:">&2 60 git log --max-count=1--pretty='tformat:warn: %h: %s'$headrev>&2 61echo"warn: Are you sure you pushed$headthere?">&2 62echo>&2 63echo>&2 64 branch=..BRANCH.NOT.VERIFIED.. 65 status=1 66fi 67 68echo"The following changes since commit$baserev:" 69git shortlog --max-count=1$baserev|sed-e's/^\(.\)/ \1/' 70 71echo"are available in the git repository at:" 72echo 73echo"$url$branch" 74echo 75 76git shortlog ^$baserev $headrev 77git diff-M --stat --summary$patch $merge_base..$headrev 78exit$status