diff options
| author | Junio C Hamano <gitster@pobox.com> | 2023-12-20 10:14:54 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2023-12-20 10:14:54 -0800 |
| commit | 67dfb897b3ea438a5a7bb29af2cd0360235e5191 (patch) | |
| tree | a75698277601cbe8a50abe8c06c23669065026ab | |
| parent | Merge branch 'jk/end-of-options' (diff) | |
| parent | bisect: always clean on reset (diff) | |
| download | git-67dfb897b3ea438a5a7bb29af2cd0360235e5191.tar.gz git-67dfb897b3ea438a5a7bb29af2cd0360235e5191.zip | |
Merge branch 'jk/bisect-reset-fix'
"git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
* jk/bisect-reset-fix:
bisect: always clean on reset
| -rw-r--r-- | builtin/bisect.c | 9 | ||||
| -rwxr-xr-x | t/t6030-bisect-porcelain.sh | 6 |
2 files changed, 10 insertions, 5 deletions
diff --git a/builtin/bisect.c b/builtin/bisect.c index 35938b05fd..c5565686bf 100644 --- a/builtin/bisect.c +++ b/builtin/bisect.c @@ -233,11 +233,10 @@ static int bisect_reset(const char *commit) struct strbuf branch = STRBUF_INIT; if (!commit) { - if (strbuf_read_file(&branch, git_path_bisect_start(), 0) < 1) { + if (!strbuf_read_file(&branch, git_path_bisect_start(), 0)) printf(_("We are not bisecting.\n")); - return 0; - } - strbuf_rtrim(&branch); + else + strbuf_rtrim(&branch); } else { struct object_id oid; @@ -246,7 +245,7 @@ static int bisect_reset(const char *commit) strbuf_addstr(&branch, commit); } - if (!ref_exists("BISECT_HEAD")) { + if (branch.len && !ref_exists("BISECT_HEAD")) { struct child_process cmd = CHILD_PROCESS_INIT; cmd.git_cmd = 1; diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh index 2a5b7d8379..7b24d1684e 100755 --- a/t/t6030-bisect-porcelain.sh +++ b/t/t6030-bisect-porcelain.sh @@ -170,6 +170,12 @@ test_expect_success 'bisect reset when not bisecting' ' cmp branch.expect branch.output ' +test_expect_success 'bisect reset cleans up even when not bisecting' ' + echo garbage >.git/BISECT_LOG && + git bisect reset && + test_path_is_missing .git/BISECT_LOG +' + test_expect_success 'bisect reset removes packed refs' ' git bisect reset && git bisect start && |
