Thread (1 message) 1 message, 1 author, 2016-06-15

Re: Teach "git checkout" to use git-show-ref

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:40

Linus Torvalds [off-list ref] writes:
That way, it doesn't care how the refs are stored any more

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---

Just as an example of how to use git-show-ref rather than knowing about 
"$GIT_DIR/refs/..." paths.

This basically replaces my much hackier version that is in the "lt/refs" 
branch, but can go into the master branch independently of the 
refs-packing work.
I kind of liked the rev-parse one better for this particular
command, but only slightly (by using --verify on "$arg^0", you
were also making sure what's in refs/heads/ was a commit object,
but that check is gone with this patch.  It is not a loss,
because the original code did not check it, and nobody should be
placing anything but commits under refs/heads anyway).
quoted hunk
diff --git a/git-checkout.sh b/git-checkout.sh
index 580a9e8..6e4c535 100755
--- a/git-checkout.sh
+++ b/git-checkout.sh
...
@@ -51,7 +51,7 @@ 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)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help