From: "John Cai via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Phillip Wood <phillip.wood123@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
John Cai <johncai86@gmail.com>
Subject: [PATCH v3 0/2] rebase: update HEAD when is an oid
Date: Thu, 17 Mar 2022 03:16:39 +0000 [thread overview]
Message-ID: <pull.1226.v3.git.git.1647487001.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1226.v2.git.git.1647019492.gitgitgadget@gmail.com>
Fixes a bug [1] reported by Michael McClimon where rebase with oids will
erroneously update the branch HEAD points to.
1. https://lore.kernel.org/git/xmqqsfrpbepd.fsf@gitster.g/
This patch has two parts:
* updates rebase setup test to add some tags we will use, while swapping
out manual commit creation with the test_commit helper
* sets RESET_HARD_DETACH flag if branch is not a valid refname
changes since v2:
* remove BUG assertion
changes since v1:
* only set RESET_HEAD_DETACH if is not a valid branch
* updated tests to use existing setup
John Cai (2):
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
builtin/rebase.c | 5 ++++-
t/t3400-rebase.sh | 18 +++++++++++-------
2 files changed, 15 insertions(+), 8 deletions(-)
base-commit: b896f729e240d250cf56899e6a0073f6aa469f5d
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1226%2Fjohn-cai%2Fjc%2Ffix-rebase-oids-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1226/john-cai/jc/fix-rebase-oids-v3
Pull-Request: https://github.com/git/git/pull/1226
Range-diff vs v2:
1: f3f084adfa6 ! 1: f658eb00bcd rebase: use test_commit helper in setup
@@ Commit message
can use. This uses the test_commit helper so we can replace some lines
that add a commit manually.
+ Setting logAllRefUpdates is not necessary because it's on by default for
+ repositories with a working tree.
+
Helped-by: Phillip Wood <phillip.wood123@gmail.com>
Signed-off-by: John Cai <johncai86@gmail.com>
2: 0e3c73375c1 ! 2: bd1c9537ffc rebase: set REF_HEAD_DETACH in checkout_up_to_date()
@@ builtin/rebase.c: static int checkout_up_to_date(struct rebase_options *options)
if (reset_head(the_repository, &ropts) < 0)
ret = error(_("could not switch to %s"), options->switch_to);
- ## reset.c ##
-@@ reset.c: int reset_head(struct repository *r, const struct reset_head_opts *opts)
- if (opts->branch_msg && !opts->branch)
- BUG("branch reflog message given without a branch");
-
-+ if (switch_to_branch && opts->flags & RESET_HEAD_DETACH)
-+ BUG("attempting to detach HEAD when branch is given");
-+
- if (!refs_only && repo_hold_locked_index(r, &lock, LOCK_REPORT_ON_ERROR) < 0) {
- ret = -1;
- goto leave_reset_head;
-
## t/t3400-rebase.sh ##
@@ t/t3400-rebase.sh: test_expect_success 'switch to branch not checked out' '
git rebase main other
--
gitgitgadget
next prev parent reply other threads:[~2022-03-17 3:17 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-11 5:05 [PATCH] rebase: set REF_HEAD_DETACH in checkout_up_to_date() John Cai via GitGitGadget
2022-03-11 5:33 ` Junio C Hamano
2022-03-11 5:55 ` Junio C Hamano
2022-03-11 14:14 ` John Cai
2022-03-11 15:05 ` Phillip Wood
2022-03-11 15:28 ` John Cai
2022-03-11 19:42 ` John Cai
2022-03-11 21:31 ` Phillip Wood
2022-03-11 17:24 ` [PATCH v2 0/2] rebase: update HEAD when is an oid John Cai via GitGitGadget
2022-03-11 17:24 ` [PATCH v2 1/2] rebase: use test_commit helper in setup John Cai via GitGitGadget
2022-03-13 7:50 ` Junio C Hamano
2022-03-14 10:52 ` Phillip Wood
2022-03-14 21:47 ` Junio C Hamano
2022-03-11 17:24 ` [PATCH v2 2/2] rebase: set REF_HEAD_DETACH in checkout_up_to_date() John Cai via GitGitGadget
2022-03-13 7:58 ` Junio C Hamano
2022-03-14 10:54 ` Phillip Wood
2022-03-14 14:05 ` Phillip Wood
2022-03-14 14:11 ` John Cai
2022-03-14 14:25 ` Phillip Wood
2022-03-17 3:16 ` John Cai via GitGitGadget [this message]
2022-03-17 3:16 ` [PATCH v3 1/2] rebase: use test_commit helper in setup John Cai via GitGitGadget
2022-03-17 13:37 ` Ævar Arnfjörð Bjarmason
2022-03-17 3:16 ` [PATCH v3 2/2] rebase: set REF_HEAD_DETACH in checkout_up_to_date() John Cai via GitGitGadget
2022-03-17 13:42 ` Ævar Arnfjörð Bjarmason
2022-03-17 15:34 ` Junio C Hamano
2022-03-17 19:53 ` [PATCH v4 0/3] rebase: update HEAD when is an oid John Cai via GitGitGadget
2022-03-17 19:53 ` [PATCH v4 1/3] rebase: test showing bug in rebase with non-branch John Cai via GitGitGadget
2022-03-17 21:10 ` Junio C Hamano
2022-03-17 21:37 ` Junio C Hamano
2022-03-17 22:44 ` John Cai
2022-03-17 19:53 ` [PATCH v4 2/3] rebase: use test_commit helper in setup John Cai via GitGitGadget
2022-03-18 11:14 ` Phillip Wood
2022-03-18 13:06 ` John Cai
2022-03-17 19:53 ` [PATCH v4 3/3] rebase: set REF_HEAD_DETACH in checkout_up_to_date() John Cai via GitGitGadget
2022-03-17 21:36 ` Junio C Hamano
2022-03-18 0:30 ` John Cai
2022-03-18 13:54 ` [PATCH v5 0/2] rebase: update HEAD when is an oid John Cai via GitGitGadget
2022-03-18 13:54 ` [PATCH v5 1/2] rebase: use test_commit helper in setup John Cai via GitGitGadget
2022-03-18 16:51 ` Junio C Hamano
2022-03-18 13:54 ` [PATCH v5 2/2] rebase: set REF_HEAD_DETACH in checkout_up_to_date() John Cai via GitGitGadget
2022-03-18 16:55 ` [PATCH v5 0/2] rebase: update HEAD when is an oid Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1226.v3.git.git.1647487001.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johncai86@gmail.com \
--cc=phillip.wood123@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.