threads / patch / 10860

patchBisect visualize: use "for-each-ref" to list all good refs.

Subject: [PATCH] Bisect visualize: use "for-each-ref" to list all good refs.

## tl;dr

4 messages between Nov 14, 2007 and Nov 15, 2007. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Christian Couder· Nov 14, 2007, 04:50 UTC · lore

In bisect_visualize, "cd $GIT_DIR/refs && echo bisect/good-*" was still used instead of "git for-each-ref". This patch fix it.

We now pass "refs/bisect/bad" and "--not refs/bisect/good-<rev>" instead of "bisect/bad" and "--not bisect/good-<rev>" to gitk, but it seems to work.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 git-bisect.sh |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Show changes to git-bisect.sh +2 −2
diff --git a/git-bisect.sh b/git-bisect.sh
index 1ed44e5..8d75d91 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -326,8 +326,8 @@ bisect_next() {
 
 bisect_visualize() {
 	bisect_next_check fail
-	not=`cd "$GIT_DIR/refs" && echo bisect/good-*`
-	eval gitk bisect/bad --not $not -- $(cat "$GIT_DIR/BISECT_NAMES")
+	not=$(git for-each-ref --format='%(refname)' "refs/bisect/good-*")
+	eval gitk refs/bisect/bad --not $not -- $(cat "$GIT_DIR/BISECT_NAMES")
 }
 
 bisect_reset() {
-- 
1.5.3.5.629.g807b3
Junio C Hamano· Nov 14, 2007, 08:11 UTC · re: Christian Couder · lore

Re: [PATCH] Bisect visualize: use "for-each-ref" to list all good refs.

Christian Couder <chriscool@tuxfamily.org> writes:
> In bisect_visualize, "cd $GIT_DIR/refs && echo bisect/good-*" was
> still used instead of "git for-each-ref". This patch fix it.
Heh, it still uses
	echo "$rev" >"$GIT_DIR/refs/bisect/$tag"

So we are still _very_ much tied to refs on the filesystem not in packed-refs.

Even worse is that bisect_clean_state uses
	rm -fr "$GIT_DIR/refs/bisect"

so if you ever pack your refs in the middle of bisection and then clean the state, you will still carry the old good set of commits that are somewhat hard to cull.

Johannes Sixt· Nov 14, 2007, 10:05 UTC · re: Junio C Hamano · lore

Re: [PATCH] Bisect visualize: use "for-each-ref" to list all good refs.

Junio C Hamano schrieb:
Show 7 quoted lines
> Even worse is that bisect_clean_state uses
> 
> 	rm -fr "$GIT_DIR/refs/bisect"
> 
> so if you ever pack your refs in the middle of bisection and
> then clean the state, you will still carry the old good set of
> commits that are somewhat hard to cull.

Heh. I think I'd done this once, and couldn't get rid of those refs with 'git-bisect reset'. Now I know why.

-- Hannes
Christian Couder· Nov 15, 2007, 06:43 UTC · re: Junio C Hamano · lore

Re: [PATCH] Bisect visualize: use "for-each-ref" to list all good refs.

Le mercredi 14 novembre 2007, Junio C Hamano a écrit :
Show 10 quoted lines
> Christian Couder <chriscool@tuxfamily.org> writes:
> > In bisect_visualize, "cd $GIT_DIR/refs && echo bisect/good-*" was
> > still used instead of "git for-each-ref". This patch fix it.
>
> Heh, it still uses
>
> 	echo "$rev" >"$GIT_DIR/refs/bisect/$tag"
>
> So we are still _very_ much tied to refs on the filesystem not
> in packed-refs.

Yes, but someone (guess who) started to modernize git-bisect by using "for-each-ref":

http://git.kernel.org/?p=git/git.git;a=commitdiff;h=6fecf1915c5fd0b14e2ca2ec9e1a6b620abfb5c2 http://git.kernel.org/?p=git/git.git;a=commitdiff;h=0a5280a9f444c33b0e4ebf2f073df5899c112cf8

so I thought it would be fine to finish this modernization work.
Show 7 quoted lines
> Even worse is that bisect_clean_state uses
>
> 	rm -fr "$GIT_DIR/refs/bisect"
>
> so if you ever pack your refs in the middle of bisection and
> then clean the state, you will still carry the old good set of
> commits that are somewhat hard to cull.

Thanks for reminding me of this problem. I just posted a patch that should fix it.

Best regards, Christian.

← back to recent threads