mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
'git bisect visualize'
Linus says: I'm testing bisection to find a bug that causes my G5 to no longer boot, and during the process have found this command line very nice: gitk bisect/bad --not $(cd .git/refs ; ls bisect/good-*) it basically shows the state of bisection with the known bad commit as the top, and cutting off all the good commits - so what you see are the potential buggy commits. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
670f5fe34f
commit
cc9f24d024
|
@ -2,12 +2,13 @@
|
||||||
. git-sh-setup-script || dir "Not a git archive"
|
. git-sh-setup-script || dir "Not a git archive"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo >&2 'usage: git bisect [start | bad | good | next | reset]
|
echo >&2 'usage: git bisect [start|bad|good|next|reset|visualize]
|
||||||
git bisect start reset bisect state and start bisection.
|
git bisect start reset bisect state and start bisection.
|
||||||
git bisect bad [<rev>] mark <rev> a known-bad revision.
|
git bisect bad [<rev>] mark <rev> a known-bad revision.
|
||||||
git bisect good [<rev>...] mark <rev>... known-good revisions.
|
git bisect good [<rev>...] mark <rev>... known-good revisions.
|
||||||
git bisect next find next bisection to test and check it out.
|
git bisect next find next bisection to test and check it out.
|
||||||
git bisect reset [<branch>] finish bisection search and go back to branch.'
|
git bisect reset [<branch>] finish bisection search and go back to branch.
|
||||||
|
git bisect visualize show bisect status in gitk.'
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,8 +58,14 @@ bisect_start() {
|
||||||
|
|
||||||
bisect_bad() {
|
bisect_bad() {
|
||||||
bisect_autostart
|
bisect_autostart
|
||||||
case "$#" in 0 | 1) ;; *) usage ;; esac
|
case "$#" in
|
||||||
rev=$(git-rev-parse --verify --default HEAD "$@") || exit
|
0)
|
||||||
|
rev=$(git-rev-parse --verify HEAD) ;;
|
||||||
|
1)
|
||||||
|
rev=$(git-rev-parse --verify "$1") ;;
|
||||||
|
*)
|
||||||
|
usage ;;
|
||||||
|
esac || exit
|
||||||
echo "$rev" > "$GIT_DIR/refs/bisect/bad"
|
echo "$rev" > "$GIT_DIR/refs/bisect/bad"
|
||||||
bisect_auto_next
|
bisect_auto_next
|
||||||
}
|
}
|
||||||
|
@ -67,11 +74,13 @@ bisect_good() {
|
||||||
bisect_autostart
|
bisect_autostart
|
||||||
case "$#" in
|
case "$#" in
|
||||||
0) revs=$(git-rev-parse --verify HEAD) || exit ;;
|
0) revs=$(git-rev-parse --verify HEAD) || exit ;;
|
||||||
*) revs=$(git-rev-parse --revs-only --no-flags "$@") || exit ;;
|
*) revs=$(git-rev-parse --revs-only --no-flags "$@") &&
|
||||||
|
test '' != "$revs" || die "Bad rev input: $@" ;;
|
||||||
esac
|
esac
|
||||||
for rev in $revs
|
for rev in $revs
|
||||||
do
|
do
|
||||||
echo "$rev" >"$GIT_DIR/refs/bisect/good-$rev"
|
rev=$(git-rev-parse --verify "$rev") || exit
|
||||||
|
echo "$rev" >"$GIT_DIR/refs/bisect/good-$rev"
|
||||||
done
|
done
|
||||||
bisect_auto_next
|
bisect_auto_next
|
||||||
}
|
}
|
||||||
|
@ -122,6 +131,11 @@ bisect_next() {
|
||||||
ln -sf refs/heads/bisect "$GIT_DIR/HEAD"
|
ln -sf refs/heads/bisect "$GIT_DIR/HEAD"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bisect_visualize() {
|
||||||
|
bisect_next_check fail
|
||||||
|
gitk bisect/bad --not `cd "$GIT_DIR/refs" && echo bisect/good-*`
|
||||||
|
}
|
||||||
|
|
||||||
bisect_reset() {
|
bisect_reset() {
|
||||||
case "$#" in
|
case "$#" in
|
||||||
0) branch=master ;;
|
0) branch=master ;;
|
||||||
|
@ -154,6 +168,8 @@ case "$#" in
|
||||||
next)
|
next)
|
||||||
# Not sure we want "next" at the UI level anymore.
|
# Not sure we want "next" at the UI level anymore.
|
||||||
bisect_next "$@" ;;
|
bisect_next "$@" ;;
|
||||||
|
visualize)
|
||||||
|
bisect_visualize "$@" ;;
|
||||||
reset)
|
reset)
|
||||||
bisect_reset "$@" ;;
|
bisect_reset "$@" ;;
|
||||||
*)
|
*)
|
||||||
|
|
Loading…
Reference in a new issue