Teach format-patch, rebase and cherry a..b format
Although these commands take only begin and end, not necessarily generic SHA1 expressions rev-parse supports, supporting a..b notation is good for consistency. This commit adds such without breaking backward compatibility. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
32173e6988
commit
4282c4fbdd
25
git-cherry
25
git-cherry
@ -3,6 +3,8 @@
|
|||||||
# Copyright (c) 2005 Junio C Hamano.
|
# Copyright (c) 2005 Junio C Hamano.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
. git-sh-setup-script || die "Not a git archive."
|
||||||
|
|
||||||
usage="usage: $0 "'<upstream> [<head>]
|
usage="usage: $0 "'<upstream> [<head>]
|
||||||
|
|
||||||
__*__*__*__*__> <upstream>
|
__*__*__*__*__> <upstream>
|
||||||
@ -18,8 +20,8 @@ upstream, it is shown on the standard output.
|
|||||||
The output is intended to be used as:
|
The output is intended to be used as:
|
||||||
|
|
||||||
OLD_HEAD=$(git-rev-parse HEAD)
|
OLD_HEAD=$(git-rev-parse HEAD)
|
||||||
git-rev-parse linus >${GIT_DIR-.}/HEAD
|
git-rev-parse upstream >${GIT_DIR-.}/HEAD
|
||||||
git-cherry linus OLD_HEAD |
|
git-cherry upstream $OLD_HEAD |
|
||||||
while read commit
|
while read commit
|
||||||
do
|
do
|
||||||
GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p "$commit" &&
|
GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p "$commit" &&
|
||||||
@ -27,20 +29,27 @@ The output is intended to be used as:
|
|||||||
done
|
done
|
||||||
'
|
'
|
||||||
|
|
||||||
|
case "$#,$1" in
|
||||||
|
1,*..*)
|
||||||
|
upstream=$(expr "$1" : '\(.*\)\.\.') ours=$(expr "$1" : '.*\.\.\(.*\)$')
|
||||||
|
set x "$upstream" "$ours"
|
||||||
|
shift ;;
|
||||||
|
esac
|
||||||
|
|
||||||
case "$#" in
|
case "$#" in
|
||||||
1) linus=`git-rev-parse --verify "$1"` &&
|
1) upstream=`git-rev-parse --verify "$1"` &&
|
||||||
junio=`git-rev-parse --verify HEAD` || exit
|
ours=`git-rev-parse --verify HEAD` || exit
|
||||||
;;
|
;;
|
||||||
2) linus=`git-rev-parse --verify "$1"` &&
|
2) upstream=`git-rev-parse --verify "$1"` &&
|
||||||
junio=`git-rev-parse --verify "$2"` || exit
|
ours=`git-rev-parse --verify "$2"` || exit
|
||||||
;;
|
;;
|
||||||
*) echo >&2 "$usage"; exit 1 ;;
|
*) echo >&2 "$usage"; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Note that these list commits in reverse order;
|
# Note that these list commits in reverse order;
|
||||||
# not that the order in inup matters...
|
# not that the order in inup matters...
|
||||||
inup=`git-rev-list ^$junio $linus` &&
|
inup=`git-rev-list ^$ours $upstream` &&
|
||||||
ours=`git-rev-list $junio ^$linus` || exit
|
ours=`git-rev-list $ours ^$upstream` || exit
|
||||||
|
|
||||||
tmp=.cherry-tmp$$
|
tmp=.cherry-tmp$$
|
||||||
patch=$tmp-patch
|
patch=$tmp-patch
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
# Copyright (c) 2005 Junio C Hamano
|
# Copyright (c) 2005 Junio C Hamano
|
||||||
#
|
#
|
||||||
|
|
||||||
|
. git-sh-setup-script || die "Not a git archive."
|
||||||
|
|
||||||
usage () {
|
usage () {
|
||||||
echo >&2 "usage: $0"' [-n] [-o dir] [--mbox] [--check] [-<diff options>...] upstream [ our-head ]
|
echo >&2 "usage: $0"' [-n] [-o dir] [--mbox] [--check] [-<diff options>...] upstream [ our-head ]
|
||||||
|
|
||||||
@ -60,13 +62,20 @@ do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
revpair=
|
||||||
case "$#" in
|
case "$#" in
|
||||||
2) linus="$1" junio="$2" ;;
|
2)
|
||||||
1) linus="$1" junio=HEAD ;;
|
revpair="$1..$2" ;;
|
||||||
*) usage ;;
|
1)
|
||||||
|
case "$1" in
|
||||||
|
*..*)
|
||||||
|
revpair="$1";;
|
||||||
|
*)
|
||||||
|
revpair="$1..HEAD";;
|
||||||
|
esac ;;
|
||||||
|
*)
|
||||||
|
usage ;;
|
||||||
esac
|
esac
|
||||||
junio=`git-rev-parse --verify "$junio"`
|
|
||||||
linus=`git-rev-parse --verify "$linus"`
|
|
||||||
|
|
||||||
me=`git-var GIT_AUTHOR_IDENT | sed -e 's/>.*/>/'`
|
me=`git-var GIT_AUTHOR_IDENT | sed -e 's/>.*/>/'`
|
||||||
|
|
||||||
@ -108,7 +117,7 @@ _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
|
|||||||
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
|
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
|
||||||
stripCommitHead='/^'"$_x40"' (from '"$_x40"')$/d'
|
stripCommitHead='/^'"$_x40"' (from '"$_x40"')$/d'
|
||||||
|
|
||||||
git-rev-list --merge-order "$junio" "^$linus" >$series
|
git-rev-list --merge-order $(git-rev-parse --revs-only "$revpair") >$series
|
||||||
total=`wc -l <$series | tr -dc "[0-9]"`
|
total=`wc -l <$series | tr -dc "[0-9]"`
|
||||||
i=$total
|
i=$total
|
||||||
while read commit
|
while read commit
|
||||||
|
@ -3,25 +3,32 @@
|
|||||||
# Copyright (c) 2005 Junio C Hamano.
|
# Copyright (c) 2005 Junio C Hamano.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
. git-sh-setup-script || die "Not a git archive."
|
||||||
|
|
||||||
usage="usage: $0 "'<upstream> [<head>]
|
usage="usage: $0 "'<upstream> [<head>]
|
||||||
|
|
||||||
Uses output from git-cherry to rebase local commits to the new head of
|
Uses output from git-cherry to rebase local commits to the new head of
|
||||||
upstream tree.'
|
upstream tree.'
|
||||||
|
|
||||||
: ${GIT_DIR=.git}
|
case "$#,$1" in
|
||||||
|
1,*..*)
|
||||||
|
upstream=$(expr "$1" : '\(.*\)\.\.') ours=$(expr "$1" : '.*\.\.\(.*\)$')
|
||||||
|
set x "$upstream" "$ours"
|
||||||
|
shift ;;
|
||||||
|
esac
|
||||||
|
|
||||||
case "$#" in
|
case "$#" in
|
||||||
1) linus=`git-rev-parse --verify "$1"` &&
|
1) upstream=`git-rev-parse --verify "$1"` &&
|
||||||
junio=`git-rev-parse --verify HEAD` || exit
|
ours=`git-rev-parse --verify HEAD` || exit
|
||||||
;;
|
;;
|
||||||
2) linus=`git-rev-parse --verify "$1"` &&
|
2) upstream=`git-rev-parse --verify "$1"` &&
|
||||||
junio=`git-rev-parse --verify "$2"` || exit
|
ours=`git-rev-parse --verify "$2"` || exit
|
||||||
;;
|
;;
|
||||||
*) echo >&2 "$usage"; exit 1 ;;
|
*) echo >&2 "$usage"; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
git-read-tree -m -u $junio $linus &&
|
git-read-tree -m -u $ours $upstream &&
|
||||||
echo "$linus" >"$GIT_DIR/HEAD" || exit
|
echo "$upstream" >"$GIT_DIR/HEAD" || exit
|
||||||
|
|
||||||
tmp=.rebase-tmp$$
|
tmp=.rebase-tmp$$
|
||||||
fail=$tmp-fail
|
fail=$tmp-fail
|
||||||
@ -29,7 +36,7 @@ trap "rm -rf $tmp-*" 0 1 2 3 15
|
|||||||
|
|
||||||
>$fail
|
>$fail
|
||||||
|
|
||||||
git-cherry $linus $junio |
|
git-cherry $upstream $ours |
|
||||||
while read sign commit
|
while read sign commit
|
||||||
do
|
do
|
||||||
case "$sign" in
|
case "$sign" in
|
||||||
|
Loading…
Reference in New Issue
Block a user