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 url=$2head=${3-HEAD} status=0 39 40test -n"$base"&&test -n"$url"|| usage 41baserev=$(git rev-parse --verify "$base"^0)&& 42headrev=$(git rev-parse --verify "$head"^0)||exit 43 44merge_base=$(git merge-base $baserev $headrev)|| 45die "fatal: No commits in common between$baseand$head" 46 47find_matching_branch="/^$headrev"'refs\/heads\//{ 48 s/^.* refs\/heads\/// 49 p 50 q 51}' 52branch=$(git ls-remote "$url" | sed -n -e "$find_matching_branch") 53url=$(git ls-remote --get-url "$url") 54 55git show -s --format='The following changes since commit %H: 56 57 %s (%ci) 58 59are available in the git repository at: 60'$baserev&& 61echo"$url${branch+ $branch}"&& 62git show -s --format=' 63for you to fetch changes up to %H: 64 65 %s (%ci) 66 67----------------------------------------------------------------'$headrev&& 68 69git shortlog ^$baserev $headrev&& 70git diff-M --stat --summary$patch $merge_base..$headrev|| status=1 71 72iftest -z"$branch" 73then 74echo"warn: No branch of$urlis at:">&2 75 git show -s --format='warn: %h: %s'$headrev>&2 76echo"warn: Are you sure you pushed '$head' there?">&2 77 status=1 78fi 79exit$status