diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-02-02 06:06:56 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-02-02 06:08:14 +0300 |
commit | 7dc46429896d6292d71391ff7e5f95fec1370b51 (patch) | |
tree | 330205405f9c88d18e5577de437e1f7883e6437b | |
parent | 0509eb216fef9451845376d8c92ff585994aecd8 (diff) |
Fix "git checkout -b foo ':/substring'"
Because ':/substring' extended SHA1 expression cannot take
postfix modifiers such as ^{tree} and ^{commit}, we would need
to do it in multiple steps. With the patch, you can start a new
branch from a randomly-picked commit whose message has the named
string in it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-checkout.sh | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/git-checkout.sh b/git-checkout.sh index 5621c69d86..bd74d701a1 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -71,7 +71,8 @@ while test $# != 0; do done arg="$1" -if rev=$(git rev-parse --verify "$arg^0" 2>/dev/null) +rev=$(git rev-parse --verify "$arg" 2>/dev/null) +if rev=$(git rev-parse --verify "$rev^0" 2>/dev/null) then [ -z "$rev" ] && die "unknown flag $arg" new_name="$arg" @@ -82,11 +83,11 @@ then fi new="$rev" shift -elif rev=$(git rev-parse --verify "$arg^{tree}" 2>/dev/null) +elif rev=$(git rev-parse --verify "$rev^{tree}" 2>/dev/null) then # checking out selected paths from a tree-ish. new="$rev" - new_name="$arg^{tree}" + new_name="$rev^{tree}" shift fi [ "$1" = "--" ] && shift |