зеркало из https://github.com/microsoft/git.git
[PATCH] Fix bisection terminating condition
When testing bisection and using gitk to visualize the result, it was obvious that the termination condition was broken. We know what the bad entry is only when the bisection ends up telling us to test the known-bad entry again. Also, add a safety net: if somebody marks as good something that includes the known-bad point, we now notice and complain, instead of writing an empty revision to the new bisection branch. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
61f01a5b77
Коммит
670f5fe34f
|
@ -105,12 +105,16 @@ bisect_next() {
|
||||||
good=$(git-rev-parse --sq --revs-only --not \
|
good=$(git-rev-parse --sq --revs-only --not \
|
||||||
$(cd "$GIT_DIR" && ls refs/bisect/good-*)) &&
|
$(cd "$GIT_DIR" && ls refs/bisect/good-*)) &&
|
||||||
rev=$(eval "git-rev-list --bisect $good $bad") || exit
|
rev=$(eval "git-rev-list --bisect $good $bad") || exit
|
||||||
nr=$(eval "git-rev-list $rev $good" | wc -l) || exit
|
if [ -z "$rev" ]; then
|
||||||
if [ "$nr" -le "1" ]; then
|
echo "$bad was both good and bad"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$rev" = "$bad" ]; then
|
||||||
echo "$rev is first bad commit"
|
echo "$rev is first bad commit"
|
||||||
git-diff-tree --pretty $rev
|
git-diff-tree --pretty $rev
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
nr=$(eval "git-rev-list $rev $good" | wc -l) || exit
|
||||||
echo "Bisecting: $nr revisions left to test after this"
|
echo "Bisecting: $nr revisions left to test after this"
|
||||||
echo "$rev" > "$GIT_DIR/refs/heads/new-bisect"
|
echo "$rev" > "$GIT_DIR/refs/heads/new-bisect"
|
||||||
git checkout new-bisect || exit
|
git checkout new-bisect || exit
|
||||||
|
|
Загрузка…
Ссылка в новой задаче