From: "Phillip Wood via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Phillip Wood <phillip.wood123@gmail.com>,
Christian Couder <christian.couder@gmail.com>,
Elijah Newren <newren@gmail.com>,
Phillip Wood <phillip.wood@dunelm.org.uk>
Subject: [PATCH v2 0/8] rebase: make reflog messages independent of the backend
Date: Wed, 20 Apr 2022 09:56:43 +0000 [thread overview]
Message-ID: <pull.1150.v2.git.1650448612.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1150.git.1645441854.gitgitgadget@gmail.com>
Thanks to Christian and Elijah for their comments on V1.
I've updated commit message for patch 1 to try and be clearer about the
removal of a call to strbuf_release() and spilt out the test changes from
the old patch 2 into a separate preparatory patch.
V1 Cover Letter:
This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.
* improve rebase reflog test coverage
* rebase --merge: fix reflog messages for --continue and --skip
* rebase --apply: respect GIT_REFLOG_ACTION
* rebase --abort: improve reflog message
* unify reflog messages between the two rebase backends
This series is based on pw/use-inprocess-checkout-in-rebase
Phillip Wood (8):
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
builtin/rebase.c | 144 ++++++++++++-----------------
sequencer.c | 5 ++
t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
3 files changed, 214 insertions(+), 120 deletions(-)
base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1150
Range-diff vs v1:
1: 243e7b0c372 ! 1: a4320f2fcf3 rebase --apply: remove duplicated code
@@ Commit message
to do as we have already updated HEAD.
Note that the removal of "strbuf_release(&msg)" is safe as there is an
- identical call just above this hunk.
+ identical call just above this hunk which can be seen by viewing the
+ diff with -U6.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
2: 493254ffbb8 ! 2: 0904b50a377 rebase --merge: fix reflog when continuing
@@ Metadata
Author: Phillip Wood <phillip.wood@dunelm.org.uk>
## Commit message ##
- rebase --merge: fix reflog when continuing
+ t3406: rework rebase reflog tests
- The reflog message for a conflict resolution committed by "rebase
- --continue" looks like
+ Refactor the tests in preparation for adding more tests in the next
+ few commits. The reworked tests use the same function for testing both
+ the "merge" and "apply" backends. The test coverage for the "apply"
+ backend now includes setting GIT_REFLOG_ACTION.
- rebase (continue): commit subject line
-
- Unfortunately the reflog message each subsequent pick look like
-
- rebase (continue) (pick): commit subject line
-
- Fix this by setting the reflog message for "rebase --continue" in
- sequencer_continue() so it does not affect subsequent commits. This
- introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
- in pick_commits(). Both of these will be fixed in a future series that
- stops the sequencer calling setenv().
+ Note that rebasing the "conflicts" branch does not create any
+ conflicts yet. A commit to do that will be added in the next commit
+ and the diff ends up smaller if we have don't rename the branch when
+ it is added.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
- ## builtin/rebase.c ##
-@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
- int fd;
-
- options.action = "continue";
-- set_reflog_action(&options);
--
- /* Sanity check */
- if (get_oid("HEAD", &head))
- die(_("Cannot read HEAD"));
-
- ## sequencer.c ##
-@@ sequencer.c: int sequencer_continue(struct repository *r, struct replay_opts *opts)
- if (read_populate_opts(opts))
- return -1;
- if (is_rebase_i(opts)) {
-+ char *previous_reflog_action;
-+
- if ((res = read_populate_todo(r, &todo_list, opts)))
- goto release_todo_list;
-
-@@ sequencer.c: int sequencer_continue(struct repository *r, struct replay_opts *opts)
- unlink(rebase_path_dropped());
- }
-
-+ previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
-+ setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
- if (commit_staged_changes(r, opts, &todo_list)) {
- res = -1;
- goto release_todo_list;
- }
-+ setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
- } else if (!file_exists(get_todo_path(opts)))
- return continue_single_pick(r, opts);
- else if ((res = read_populate_todo(r, &todo_list, opts)))
-
## t/t3406-rebase-message.sh ##
@@ t/t3406-rebase-message.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
test_expect_success 'setup' '
@@ t/t3406-rebase-message.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+ git checkout -b conflicts O &&
+ test_commit P &&
-+ test_commit conflict-X fileX &&
+ test_commit Q &&
+
git checkout -b topic O &&
@@ t/t3406-rebase-message.sh: test_expect_success 'error out early upon -C<n> or --
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
-+ test_must_fail git rebase $mode main &&
-+ echo resolved >fileX &&
-+ git add fileX &&
-+ git rebase --continue
++ git rebase $mode main
+ ) &&
+
-+ git log -g --format=%gs -5 >actual &&
++ git log -g --format=%gs -4 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
-+ ${reflog_action:-rebase} (continue): conflict-X
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
EOF
-: ----------- > 3: 6c15f00e170 rebase --merge: fix reflog when continuing
3: f4e6e94bc2c = 4: d3afa85ffc5 rebase --merge: fix reflog message after skipping
4: 58c560d0e19 = 5: afa67abe01a rebase --apply: respect GIT_REFLOG_ACTION
5: 1c3ec165422 = 6: 95161f21e00 rebase --apply: make reflog messages match rebase --merge
6: c863cebbdc8 = 7: d2c1dfbcd5e rebase --abort: improve reflog message
7: d26a221a79d = 8: b0d21affa78 rebase: cleanup action handling
--
gitgitgadget
next prev parent reply other threads:[~2022-04-20 9:57 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-21 11:10 [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-02-21 11:10 ` [PATCH 1/7] rebase --apply: remove duplicated code Phillip Wood via GitGitGadget
2022-04-07 13:35 ` Christian Couder
2022-04-17 1:56 ` Elijah Newren
2022-02-21 11:10 ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-04-07 13:49 ` Christian Couder
2022-04-15 14:00 ` Phillip Wood
2022-04-17 1:57 ` Elijah Newren
2022-02-21 11:10 ` [PATCH 3/7] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-04-17 1:58 ` Elijah Newren
2022-02-21 11:10 ` [PATCH 4/7] rebase --apply: respect GIT_REFLOG_ACTION Phillip Wood via GitGitGadget
2022-04-07 13:59 ` Christian Couder
2022-04-15 14:03 ` Phillip Wood
2022-02-21 11:10 ` [PATCH 5/7] rebase --apply: make reflog messages match rebase --merge Phillip Wood via GitGitGadget
2022-04-17 2:03 ` Elijah Newren
2022-02-21 11:10 ` [PATCH 6/7] rebase --abort: improve reflog message Phillip Wood via GitGitGadget
2022-04-17 2:07 ` Elijah Newren
2022-02-21 11:10 ` [PATCH 7/7] rebase: cleanup action handling Phillip Wood via GitGitGadget
2022-04-17 2:07 ` Elijah Newren
2022-04-04 15:34 ` Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend) Phillip Wood
2022-04-17 2:13 ` Elijah Newren
2022-04-18 18:56 ` Phillip Wood
2022-04-07 14:15 ` [PATCH 0/7] rebase: make reflog messages independent of the backend Christian Couder
2022-04-17 2:09 ` Elijah Newren
2022-04-20 9:56 ` Phillip Wood via GitGitGadget [this message]
2022-04-20 9:56 ` [PATCH v2 1/8] rebase --apply: remove duplicated code Phillip Wood via GitGitGadget
2022-04-20 10:10 ` Ævar Arnfjörð Bjarmason
2022-04-20 18:25 ` Junio C Hamano
2022-04-20 18:39 ` Junio C Hamano
2022-04-20 9:56 ` [PATCH v2 2/8] t3406: rework rebase reflog tests Phillip Wood via GitGitGadget
2022-04-20 20:17 ` Junio C Hamano
2022-04-20 9:56 ` [PATCH v2 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-04-20 9:56 ` [PATCH v2 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-04-20 9:56 ` [PATCH v2 5/8] rebase --apply: respect GIT_REFLOG_ACTION Phillip Wood via GitGitGadget
2022-04-20 9:56 ` [PATCH v2 6/8] rebase --apply: make reflog messages match rebase --merge Phillip Wood via GitGitGadget
2022-04-20 10:22 ` Ævar Arnfjörð Bjarmason
2022-04-20 22:15 ` Junio C Hamano
2022-04-20 9:56 ` [PATCH v2 7/8] rebase --abort: improve reflog message Phillip Wood via GitGitGadget
2022-04-20 9:56 ` [PATCH v2 8/8] rebase: cleanup action handling Phillip Wood via GitGitGadget
2022-04-20 10:34 ` Ævar Arnfjörð Bjarmason
2022-10-12 9:35 ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 1/8] rebase --apply: remove duplicated code Phillip Wood via GitGitGadget
2022-10-12 20:36 ` Junio C Hamano
2022-10-13 18:13 ` Junio C Hamano
2022-10-20 9:50 ` Phillip Wood
2022-10-12 9:35 ` [PATCH v3 2/8] t3406: rework rebase reflog tests Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 5/8] rebase --apply: respect GIT_REFLOG_ACTION Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 6/8] rebase --apply: make reflog messages match rebase --merge Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 7/8] rebase --abort: improve reflog message Phillip Wood via GitGitGadget
2022-10-12 9:35 ` [PATCH v3 8/8] rebase: cleanup action handling Phillip Wood via GitGitGadget
2022-10-12 20:37 ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Junio C Hamano
2022-10-13 8:44 ` Phillip Wood
2022-10-13 15:31 ` Junio C Hamano
2022-10-21 9:21 ` [PATCH v4 " Phillip Wood via GitGitGadget
2022-10-21 9:21 ` [PATCH v4 1/8] t3406: rework rebase reflog tests Phillip Wood via GitGitGadget
2022-10-21 9:21 ` [PATCH v4 2/8] rebase --apply: improve fast-forward reflog message Phillip Wood via GitGitGadget
2022-10-21 9:21 ` [PATCH v4 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-21 17:37 ` Junio C Hamano
2022-10-25 10:08 ` Phillip Wood
2022-10-25 16:11 ` Junio C Hamano
2022-10-26 15:17 ` Phillip Wood
2022-10-26 16:55 ` Junio C Hamano
2022-10-21 9:21 ` [PATCH v4 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-10-21 9:21 ` [PATCH v4 5/8] rebase --apply: respect GIT_REFLOG_ACTION Phillip Wood via GitGitGadget
2022-10-21 17:38 ` Junio C Hamano
2022-10-21 9:21 ` [PATCH v4 6/8] rebase --apply: make reflog messages match rebase --merge Phillip Wood via GitGitGadget
2022-10-21 17:39 ` Junio C Hamano
2022-10-21 9:21 ` [PATCH v4 7/8] rebase --abort: improve reflog message Phillip Wood via GitGitGadget
2022-10-21 17:44 ` Junio C Hamano
2022-10-21 9:21 ` [PATCH v4 8/8] rebase: cleanup action handling Phillip Wood via GitGitGadget
2022-10-21 17:54 ` 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.1150.v2.git.1650448612.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=newren@gmail.com \
--cc=phillip.wood123@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
/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.