提交 d16dc428 编写于 作者: N Nguyễn Thái Ngọc Duy 提交者: Junio C Hamano

switch: allow to switch in the middle of bisect

In c45f0f52 (switch: reject if some operation is in progress,
2019-03-29), a check is added to prevent switching when some operation
is in progress. The reason is it's often not safe to do so.

This is true for merge, am, rebase, cherry-pick and revert, but not so
much for bisect because bisecting is basically jumping/switching between
a bunch of commits to pin point the first bad one. git-bisect suggests
the next commit to test, but it's not wrong for the user to test a
different commit because git-bisect cannot have the knowledge to know
better.

For this reason, allow to switch when bisecting (*). I considered if we
should still prevent switching by default and allow it with
--ignore-in-progress. But I don't think the prevention really adds
anything much.

If the user switches away by mistake, since we print the previous HEAD
value, even if they don't know about the "-" shortcut, switching back is
still possible.

The warning will be printed on every switch while bisect is still
ongoing, not the first time you switch away from bisect's suggested
commit, so it could become a bit annoying.

(*) of course when it's safe to do so, i.e. no loss of local changes and
stuff.
Signed-off-by: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 bcba4065
......@@ -1326,9 +1326,7 @@ static void die_if_some_operation_in_progress(void)
"Consider \"git revert --quit\" "
"or \"git worktree add\"."));
if (state.bisect_in_progress)
die(_("cannot switch branch while bisecting\n"
"Consider \"git bisect reset HEAD\" "
"or \"git worktree add\"."));
warning(_("you are switching branch while bisecting"));
}
static int checkout_branch(struct checkout_opts *opts,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册