From: Linus Torvalds Date: Fri, 15 Sep 2006 21:56:55 +0000 (-0700) Subject: Teach "git checkout" to use git-show-ref X-Git-Tag: v1.4.4-rc1~43^2~19^2~7 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=305e22c36e674924de6decb29e8a4c22292b5054;p=git.git Teach "git checkout" to use git-show-ref That way, it doesn't care how the refs are stored any more Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- diff --git a/git-checkout.sh b/git-checkout.sh index 580a9e8a2..f03620b05 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -22,7 +22,7 @@ while [ "$#" != "0" ]; do shift [ -z "$newbranch" ] && die "git checkout: -b needs a branch name" - [ -e "$GIT_DIR/refs/heads/$newbranch" ] && + git-show-ref --verify --quiet -- "refs/heads/$newbranch" && die "git checkout: branch $newbranch already exists" git-check-ref-format "heads/$newbranch" || die "git checkout: we do not like '$newbranch' as a branch name." @@ -51,7 +51,8 @@ while [ "$#" != "0" ]; do fi new="$rev" new_name="$arg^0" - if [ -f "$GIT_DIR/refs/heads/$arg" ]; then + if git-show-ref --verify --quiet -- "refs/heads/$arg" + then branch="$arg" fi elif rev=$(git-rev-parse --verify "$arg^{tree}" 2>/dev/null)