1#!/bin/sh 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_KEEPDASHDASH= 12OPTIONS_SPEC='git request-pull [options] start url [end] 13-- 14p show patch text as well 15' 16 17. git-sh-setup 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=$(git ls-remote --get-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 68git show -s --format='The following changes since commit %H: 69 70 %s (%ci) 71 72are available in the git repository at:'$baserev&& 73echo"$url$branch"&& 74echo&& 75 76git shortlog ^$baserev $headrev&& 77git diff-M --stat --summary$patch $merge_base..$headrev||exit 78exit$status