Browse Source

format-patch: fix two-argument special case, and make it easier to pick single commits

Luben Tuikov noticed that sometimes being able to say
'git-format-patch <commit>' to format the change a single commit
introduces relative to its parent is handy.

This patch does not support that directly, but it makes sense to
interpret a single argument "rev" to mean "rev^1..rev".

With this, the backward compatibility syntaxes still apply:

 - "format-patch master" means "format-patch master..HEAD"
 - "format-patch origin master" means "format-patch origin..master"
 - "format-patch origin.." means "format-patch origin..HEAD"

But "format-patch a b c d e" formats the changes these five
commits introduce relative to their respective parents.  Earlier
it rejected these arguments not in "one..two" form.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 19 years ago
parent
commit
88b5a74883
  1. 5
      git-format-patch.sh

5
git-format-patch.sh

@ -99,7 +99,7 @@ filelist=$tmp-files @@ -99,7 +99,7 @@ filelist=$tmp-files
# Also, "rev1.." should mean "rev1..HEAD"; git-diff users are
# familiar with that syntax.

case "$#,$1" in
case "$#,$1$2" in
1,?*..?*)
# single "rev1..rev2"
;;
@ -131,7 +131,8 @@ do @@ -131,7 +131,8 @@ do
rev2=`expr "$revpair" : '.*\.\.\(.*\)'`
;;
*)
usage
rev1="$revpair^"
rev2="$revpair"
;;
esac
git-rev-parse --verify "$rev1^0" >/dev/null 2>&1 ||

Loading…
Cancel
Save