Skip to content

Commit

Permalink
git-bisect visualize: work in non-windowed environments better
Browse files Browse the repository at this point in the history
This teaches "git bisect visualize" to be more useful in non-windowed
environments.

 (1) When no option is given, and $DISPLAY is set, it continues to
     spawn gitk as before;

 (2) When no option is given, and $DISPLAY is unset, "git log" is run
     to show the range of commits between the bad one and the good ones;

 (3) If only "-flag" options are given, "git log <options>" is run.
     E.g. "git bisect visualize --stat"

 (4) Otherwise, all of the given options are taken as the initial part
     of the command line and the commit range expression is given to
     that command.  E.g. "git bisect visualize tig" will run "tig"
     history viewer to show between the bad one and the good ones.

As "visualize" is a bit too long to type, we also give it a shorter
synonym "view".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Dec 8, 2007
1 parent 4af756f commit 235997c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
11 changes: 10 additions & 1 deletion Documentation/git-bisect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,16 @@ During the bisection process, you can say
$ git bisect visualize
------------

to see the currently remaining suspects in `gitk`.
to see the currently remaining suspects in `gitk`. `visualize` is a bit
too long to type and `view` is provided as a synonym.

If `DISPLAY` environment variable is not set, `git log` is used
instead. You can even give command line options such as `-p` and
`--stat`.

------------
$ git bisect view --stat
------------

Bisect log and bisect replay
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down
19 changes: 17 additions & 2 deletions git-bisect.sh
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,23 @@ bisect_next() {

bisect_visualize() {
bisect_next_check fail

if test $# = 0
then
case "${DISPLAY+set}" in
'') set git log ;;
set) set gitk ;;
esac
else
case "$1" in
git*|tig) ;;
-*) set git log "$@" ;;
*) set git "$@" ;;
esac
fi

not=$(git for-each-ref --format='%(refname)' "refs/bisect/good-*")
eval gitk refs/bisect/bad --not $not -- $(cat "$GIT_DIR/BISECT_NAMES")
eval '"$@"' refs/bisect/bad --not $not -- $(cat "$GIT_DIR/BISECT_NAMES")
}

bisect_reset() {
Expand Down Expand Up @@ -449,7 +464,7 @@ case "$#" in
next)
# Not sure we want "next" at the UI level anymore.
bisect_next "$@" ;;
visualize)
visualize|view)
bisect_visualize "$@" ;;
reset)
bisect_reset "$@" ;;
Expand Down

0 comments on commit 235997c

Please sign in to comment.