threads / patch / 18718

patchbisect: improve error message when branch checkout fails

Subject: [PATCH] bisect: improve error message when branch checkout fails

## tl;dr

2 messages between Apr 4, 2009 and Apr 5, 2009. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Christian Couder· Apr 4, 2009, 20:02 UTC · lore

In "git-bisect.sh" the "git checkout" command is only used to change the current branch, but it is used like this:

git checkout "$branch"

which will output the following misleading error message when it fails:

error: pathspec 'foo' did not match any file(s) known to git.
This patch change the way we use "git checkout" like this:
git checkout "$branch" --
so that we will get the following error message:
fatal: invalid reference: foo
which is better.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 git-bisect.sh |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Show changes to git-bisect.sh +3 −3
diff --git a/git-bisect.sh b/git-bisect.sh
index e313bde..df0ae63 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -77,7 +77,7 @@ bisect_start() {
 	then
 		# Reset to the rev from where we started.
 		start_head=$(cat "$GIT_DIR/BISECT_START")
-		git checkout "$start_head" || exit
+		git checkout "$start_head" -- || exit
 	else
 		# Get rev from where we start.
 		case "$head" in
@@ -370,7 +370,7 @@ bisect_checkout() {
 	_msg="$2"
 	echo "Bisecting: $_msg"
 	mark_expected_rev "$_rev"
-	git checkout -q "$_rev" || exit
+	git checkout -q "$_rev" -- || exit
 	git show-branch "$_rev"
 }
 
@@ -549,7 +549,7 @@ bisect_reset() {
 	*)
 	    usage ;;
 	esac
-	git checkout "$branch" && bisect_clean_state
+	git checkout "$branch" -- && bisect_clean_state
 }
 
 bisect_clean_state() {
-- 
1.6.2.2.404.ge96f3.dirty
Junio C Hamano· Apr 5, 2009, 09:46 UTC · re: Christian Couder · lore

Re: [PATCH] bisect: improve error message when branch checkout fails

Christian Couder <chriscool@tuxfamily.org> writes:
Show 19 quoted lines
> In "git-bisect.sh" the "git checkout" command is only used to
> change the current branch, but it is used like this:
>
> git checkout "$branch"
>
> which will output the following misleading error message when
> it fails:
>
> error: pathspec 'foo' did not match any file(s) known to git.
>
> This patch change the way we use "git checkout" like this:
>
> git checkout "$branch" --
>
> so that we will get the following error message:
>
> fatal: invalid reference: foo
>
> which is better.
Thanks; will apply.

But I think "git checkout" should either say "unknown branch" (assuming that most people switch branches, not detach HEAD), or "no such commit" (which could be a bit confusing for people who have not even heard of detached HEAD, but may be more technically correct).

"Invalid reference" does not help anybody and is not technically correct, either. A git newbie would say "Huh? what is a ref?" and a git savvy would say "I admit I made a typo, but you, the git checkout command, are supposed to take an arbitrary commit object, not necessarily a ref".

← back to recent threads