From: Patrick Steinhardt <ps@pks.im>
To: Elijah Newren <newren@gmail.com>
Cc: git@vger.kernel.org, "D. Ben Knoble" <ben.knoble@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Sergey Organov" <sorganov@gmail.com>,
"Jean-Noël AVILA" <jn.avila@free.fr>,
"Martin von Zweigbergk" <martinvonz@gmail.com>,
"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com>,
"Karthik Nayak" <karthik.188@gmail.com>,
"Phillip Wood" <phillip.wood123@gmail.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>,
"Matthias Beyer" <mail@beyermatthias.de>
Subject: Re: [PATCH v8 7/7] builtin/history: implement "reword" subcommand
Date: Mon, 12 Jan 2026 14:03:31 +0100 [thread overview]
Message-ID: <aWTxI-j__VGkPrVb@pks.im> (raw)
In-Reply-To: <CABPp-BHFwvg5A295kXkc_axoibNhGDn4ZUkm0uE1u+358xSZzw@mail.gmail.com>
On Fri, Jan 09, 2026 at 05:20:04PM -0800, Elijah Newren wrote:
> On Wed, Jan 7, 2026 at 2:10 AM Patrick Steinhardt <ps@pks.im> wrote:
> > diff --git a/Documentation/git-history.adoc b/Documentation/git-history.adoc
> > index 5a9d931efc..4eea317e5c 100644
> > --- a/Documentation/git-history.adoc
> > +++ b/Documentation/git-history.adoc
> > @@ -8,7 +8,7 @@ git-history - EXPERIMENTAL: Rewrite history
> > SYNOPSIS
> > --------
> > [synopsis]
> > -git history [<options>]
> > +git history reword <commit> [--ref-action=(branches|head|print)]
> >
> > DESCRIPTION
> > -----------
> > @@ -32,8 +32,9 @@ Overall, linkgit:git-history[1] aims to provide a more opinionated way to modify
> > your commit history that is simpler to use compared to linkgit:git-rebase[1] in
> > general.
> >
> > -If you want to reapply a range of commits onto a different base, or interactive
> > -rebases if you want to edit a range of commits.
> > +Use linkgit:git-rebase[1] if you want to reapply a range of commits onto a
> > +different base, or interactive rebases if you want to edit a range of commits
> > +at once.
>
> Ah, was the previous sentence here from the former patch just a bad
> splitting when you were rewriting?
Dunno what happened here, to be honest.
> > LIMITATIONS
> > -----------
> > @@ -51,6 +52,22 @@ COMMANDS
> >
> > Several commands are available to rewrite history in different ways:
> >
> > +`reword <commit>`::
> > + Rewrite the commit message of the specified commit. All the other
> > + details of this commit remain unchanged. This command will spawn an
> > + editor with the current message of that commit.
>
> One isn't exactly "several"; I know you'll add more later, but since
> this series ends here, should that word be changed?
We can just say "The following commands", there is no need to be
specific.
> > +
> > +OPTIONS
> > +-------
> > +
> > +`--ref-action=(branches|head|print)`::
> > + Control which references will be updated by the command, if any. With
> > + `branches`, all local branches that point to commits which are
> > + decendants of the original commit will be rewritten. With `head`, only
>
> decendants -> descendants . Or maybe double down on the typo and
> extend it a bit into either 'decedent' or 'decadent'. That could be
> fun.
Thanks, this made me laugh. :)
> > diff --git a/builtin/history.c b/builtin/history.c
> > index f6fe32610b..59011ea517 100644
> > --- a/builtin/history.c
> > +++ b/builtin/history.c
> > @@ -1,22 +1,404 @@
[snip]
> > +static int commit_tree_with_edited_message(struct repository *repo,
> > + const char *action,
> > + struct commit *original,
> > + struct commit **out)
> > +{
> > + const char *exclude_gpgsig[] = { "gpgsig", "gpgsig-sha256", NULL };
> > + const char *original_message, *original_body, *ptr;
> > + struct commit_extra_header *original_extra_headers = NULL;
> > + struct strbuf commit_message = STRBUF_INIT;
> > + struct object_id rewritten_commit_oid;
> > + struct object_id original_tree_oid;
> > + struct object_id parent_tree_oid;
> > + char *original_author = NULL;
> > + struct commit *parent;
> > + size_t len;
> > + int ret;
> > +
> > + original_tree_oid = repo_get_commit_tree(repo, original)->object.oid;
> > +
> > + parent = original->parents ? original->parents->item : NULL;
> > + if (parent) {
> > + if (repo_parse_commit(repo, parent)) {
> > + ret = error(_("unable to parse parent commit %s"),
> > + oid_to_hex(&parent->object.oid));
> > + goto out;
> > + }
> > +
> > + parent_tree_oid = repo_get_commit_tree(repo, parent)->object.oid;
> > + } else {
> > + oidcpy(&parent_tree_oid, repo->hash_algo->empty_tree);
> > + }
> > +
> > + /* We retain authorship of the original commit. */
> > + original_message = repo_logmsg_reencode(repo, original, NULL, NULL);
> > + ptr = find_commit_header(original_message, "author", &len);
> > + if (ptr)
> > + original_author = xmemdupz(ptr, len);
> > + find_commit_subject(original_message, &original_body);
> > +
> > + ret = fill_commit_message(repo, &parent_tree_oid, &original_tree_oid,
> > + original_body, action, &commit_message);
> > + if (ret < 0)
> > + goto out;
> > +
> > + original_extra_headers = read_commit_extra_headers(original, exclude_gpgsig);
>
> Does this grab encoding? If so, should it be excluded as well given
> the repo_logmsg_reencode() call?
Hm, good question indeed. I think that makes sense.
[snip]
> > + } else {
> > + strvec_push(&args, "--branches");
> > + }
> > +
> > + setup_revisions_from_strvec(&args, &revs, NULL);
> > + if (revs.nr)
> > + BUG("revisions were set up with invalid argument '%s'", args.v[0]);
> > +
> > + opts.onto = oid_to_hex_r(hex, &rewritten->object.oid);
> > +
> > + ret = replay_revisions(repo, &revs, &opts, &updates);
> > + if (ret)
> > + goto out;
> > +
> > + switch (action) {
> > + case REF_ACTION_DEFAULT:
> > + case REF_ACTION_BRANCHES:
> > + transaction = ref_store_transaction_begin(get_main_ref_store(repo), 0, &err);
> > + if (!transaction) {
> > + ret = error(_("failed to begin ref transaction: %s"), err.buf);
> > + goto out;
> > + }
> > +
> > + for (size_t i = 0; i < updates.nr; i++) {
> > + ret = ref_transaction_update(transaction,
> > + updates.items[i].refname,
> > + &updates.items[i].new_oid,
> > + &updates.items[i].old_oid,
> > + NULL, NULL, 0, reflog_msg, &err);
> > + if (ret) {
> > + ret = error(_("failed to update ref '%s': %s"),
> > + updates.items[i].refname, err.buf);
> > + goto out;
> > + }
> > + }
> > +
> > + /*
> > + * `replay_revisions()` only updates references that are
> > + * ancestors of `rewritten`, so we need to manually
> > + * handle updating references that point to `original`.
> > + */
>
> This is a good catch; I was wondering if there was a way to put this
> logic into replay_revisions() so that other callers need not duplicate
> it, but since it just takes the revisions to walk over and that list
> is empty, it'd somehow need to know about original->object.oid; it
> doesn't have that info. Hmmm...
Yeah, exactly. I was also thinking about whether this can be part of
git-replay(1), but ultimately it didn't really seem to make sense. After
all this is about a commit that we're _not_ replaying at all, but that
we have manually edited.
> > diff --git a/replay.c b/replay.c
> > index 8c2f2d3710..5203f9db4c 100644
> > --- a/replay.c
> > +++ b/replay.c
> > @@ -254,7 +254,9 @@ int replay_revisions(struct repository *repo, struct rev_info *revs,
> > struct commit *commit;
> > struct commit *onto = NULL;
> > struct merge_options merge_opt;
> > - struct merge_result result;
> > + struct merge_result result = {
> > + .clean = 1,
> > + };
>
> Wait, what? Why is this being initialized this way?
>
> Same as I said over in
> https://lore.kernel.org/git/CABPp-BEh7VEM6UQjkK3CxJcv54vEmueTmh9+-SyTKUxgy7Mkcg@mail.gmail.com/,
> why is this change here? Was this due to hitting an empty range?
Yeah, exactly.
> Actually, while supporting empty ranges didn't make sense back when I
> mentioned it to Siddharth (because users always specified the ranges),
> I think it actually does make sense now that ranges are implicit.
> Someone could use "git history reword HEAD" (even if "git commit
> --amend" already exists), and that'd result in an empty range. So, I
> think the change makes sense now, but I think this particular change
> really ought to be documented and motivated in a separate commit
> message rather than lumped in with the other changes in this commit.
That's fair, will do.
Thanks!
Patrick
next prev parent reply other threads:[~2026-01-12 13:03 UTC|newest]
Thread overview: 362+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-19 10:55 [PATCH RFC 00/11] Introduce git-history(1) command for easy history editing Patrick Steinhardt
2025-08-19 10:55 ` [PATCH RFC 01/11] sequencer: optionally skip printing commit summary Patrick Steinhardt
2025-08-19 10:55 ` [PATCH RFC 02/11] sequencer: add option to rewind HEAD after picking commits Patrick Steinhardt
2025-08-19 10:55 ` [PATCH RFC 03/11] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 04/11] builtin: add new "history" command Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 05/11] builtin/history: implement "drop" subcommand Patrick Steinhardt
2025-08-20 20:39 ` Ben Knoble
2025-08-22 12:21 ` Patrick Steinhardt
2025-08-23 16:15 ` Jean-Noël AVILA
2025-08-24 16:02 ` Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 06/11] builtin/history: implement "reorder" subcommand Patrick Steinhardt
2025-08-23 16:24 ` Jean-Noël AVILA
2025-08-24 17:25 ` Kristoffer Haugsbakk
2025-08-24 17:34 ` Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 07/11] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 08/11] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 09/11] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 10/11] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-08-20 21:15 ` D. Ben Knoble
2025-08-22 12:21 ` Patrick Steinhardt
2025-08-19 10:56 ` [PATCH RFC 11/11] builtin/history: implement "split" subcommand Patrick Steinhardt
2025-08-20 21:27 ` D. Ben Knoble
2025-08-22 12:22 ` Patrick Steinhardt
2025-08-22 18:08 ` Junio C Hamano
2025-08-24 16:03 ` Patrick Steinhardt
2025-08-23 16:37 ` Jean-Noël AVILA
2025-08-24 16:02 ` Patrick Steinhardt
2025-08-19 21:28 ` [PATCH RFC 00/11] Introduce git-history(1) command for easy history editing D. Ben Knoble
2025-08-20 6:54 ` Patrick Steinhardt
2025-08-20 16:55 ` Ben Knoble
2025-08-20 17:36 ` Junio C Hamano
2025-08-20 17:49 ` Ben Knoble
2025-08-22 12:21 ` Patrick Steinhardt
2025-08-22 17:58 ` Junio C Hamano
2025-08-21 16:26 ` Sergey Organov
2025-08-21 17:21 ` Ben Knoble
2025-08-21 18:15 ` Sergey Organov
2025-08-24 1:25 ` Martin von Zweigbergk
2025-08-24 16:03 ` Patrick Steinhardt
2025-09-17 20:12 ` SZEDER Gábor
2025-12-03 18:18 ` Matthias Beyer
2025-12-10 9:58 ` Phillip Wood
2025-12-10 10:37 ` Matthias Beyer
2025-12-10 11:34 ` Phillip Wood
2025-12-10 14:18 ` Junio C Hamano
2025-12-19 12:22 ` Patrick Steinhardt
2025-12-19 13:58 ` SZEDER Gábor
2025-12-19 14:09 ` Patrick Steinhardt
2025-12-19 16:30 ` Elijah Newren
2025-12-20 16:51 ` Elijah Newren
2026-01-06 15:39 ` Patrick Steinhardt
2025-12-22 10:46 ` Phillip Wood
2026-01-06 15:40 ` Patrick Steinhardt
2025-12-22 13:47 ` D. Ben Knoble
2025-12-10 16:49 ` Martin von Zweigbergk
2025-12-10 18:27 ` Elijah Newren
2025-12-10 18:45 ` Martin von Zweigbergk
2025-12-10 19:55 ` Elijah Newren
2025-12-15 23:50 ` Kristoffer Haugsbakk
2025-08-24 17:31 ` Kristoffer Haugsbakk
2025-08-24 17:38 ` Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 00/16] " Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 01/16] sequencer: optionally skip printing commit summary Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 02/16] sequencer: add option to rewind HEAD after picking commits Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 03/16] sequencer: introduce new history editing mode Patrick Steinhardt
2025-08-26 12:55 ` D. Ben Knoble
2025-09-03 12:19 ` Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 04/16] sequencer: stop using `the_repository` in `sequencer_remove_state()` Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 05/16] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-08-25 16:38 ` Junio C Hamano
2025-09-03 12:19 ` Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 06/16] builtin: add new "history" command Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 07/16] builtin/history: introduce subcommands to manage interrupted rewrites Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 08/16] builtin/history: implement "drop" subcommand Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 09/16] builtin/history: implement "reorder" subcommand Patrick Steinhardt
2025-08-26 13:03 ` D. Ben Knoble
2025-09-03 12:19 ` Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 10/16] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-08-25 16:41 ` Junio C Hamano
2025-08-24 17:42 ` [PATCH RFC v2 11/16] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 12/16] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-08-25 16:43 ` Junio C Hamano
2025-08-24 17:42 ` [PATCH RFC v2 13/16] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 14/16] wt-status: provide function to expose status for trees Patrick Steinhardt
2025-08-24 17:42 ` [PATCH RFC v2 15/16] builtin/history: implement "split" subcommand Patrick Steinhardt
2025-08-24 18:03 ` Kristoffer Haugsbakk
2025-09-03 12:20 ` Patrick Steinhardt
2025-08-26 13:14 ` D. Ben Knoble
2025-09-03 12:20 ` Patrick Steinhardt
2025-09-03 21:55 ` D. Ben Knoble
2025-09-04 12:57 ` Patrick Steinhardt
2025-09-12 18:26 ` D. Ben Knoble
2025-09-15 9:32 ` Patrick Steinhardt
2025-09-15 13:04 ` Ben Knoble
2025-08-24 17:42 ` [PATCH RFC v2 16/16] builtin/history: implement "reword" subcommand Patrick Steinhardt
2025-08-24 18:08 ` Kristoffer Haugsbakk
2025-09-03 12:20 ` Patrick Steinhardt
2025-09-03 23:39 ` [PATCH RFC v2 00/16] Introduce git-history(1) command for easy history editing D. Ben Knoble
2025-09-04 13:05 ` Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 00/18] " Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 01/18] sequencer: optionally skip printing commit summary Patrick Steinhardt
2025-09-10 14:01 ` Phillip Wood
2025-09-15 9:32 ` Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 02/18] sequencer: add option to rewind HEAD after picking commits Patrick Steinhardt
2025-09-10 14:04 ` Phillip Wood
2025-09-15 9:32 ` Patrick Steinhardt
2025-09-15 14:10 ` Phillip Wood
2025-09-04 14:27 ` [PATCH RFC v3 03/18] sequencer: introduce new history editing mode Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 04/18] sequencer: stop using `the_repository` in `sequencer_remove_state()` Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 05/18] sequencer: wire up "rewritten-hook" for REPLAY_HISTORY_EDIT Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 06/18] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 07/18] builtin: add new "history" command Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 08/18] builtin/history: introduce subcommands to manage interrupted rewrites Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 09/18] builtin/history: implement "drop" subcommand Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 10/18] builtin/history: implement "reorder" subcommand Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 11/18] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 12/18] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 13/18] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 14/18] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 15/18] wt-status: provide function to expose status for trees Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 16/18] sequencer: allow callers to provide mappings for the old commit Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 17/18] builtin/history: implement "split" subcommand Patrick Steinhardt
2025-09-10 14:04 ` Phillip Wood
2025-09-15 9:32 ` Patrick Steinhardt
2025-09-04 14:27 ` [PATCH RFC v3 18/18] builtin/history: implement "reword" subcommand Patrick Steinhardt
2025-09-10 14:05 ` Phillip Wood
2025-09-15 9:32 ` Patrick Steinhardt
2025-09-15 14:10 ` Phillip Wood
2025-09-16 8:09 ` Patrick Steinhardt
2025-09-16 8:42 ` Phillip Wood
2025-09-05 10:29 ` [PATCH RFC v3 00/18] Introduce git-history(1) command for easy history editing Kristoffer Haugsbakk
2025-09-05 11:29 ` Patrick Steinhardt
2025-09-07 6:46 ` Elijah Newren
2025-09-10 14:05 ` Phillip Wood
2025-09-10 14:08 ` Phillip Wood
2025-09-15 9:33 ` Patrick Steinhardt
2025-09-16 11:23 ` Oswald Buddenhagen
2025-09-10 20:05 ` Junio C Hamano
2025-09-15 9:32 ` Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 00/12] " Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 01/12] wt-status: provide function to expose status for trees Patrick Steinhardt
2025-10-14 8:49 ` Karthik Nayak
2025-10-21 11:43 ` Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 02/12] replay: extract logic to pick commits Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 03/12] replay: stop using `the_repository` Patrick Steinhardt
2025-10-14 8:53 ` Karthik Nayak
2025-10-01 15:57 ` [PATCH v4 04/12] replay: parse commits before dereferencing them Patrick Steinhardt
2025-10-14 8:57 ` Karthik Nayak
2025-10-01 15:57 ` [PATCH v4 05/12] builtin: add new "history" command Patrick Steinhardt
2025-10-02 9:26 ` Kristoffer Haugsbakk
2025-10-14 9:07 ` Karthik Nayak
2025-10-21 11:43 ` Patrick Steinhardt
2025-10-22 3:32 ` Junio C Hamano
2025-10-22 12:12 ` Karthik Nayak
2025-10-01 15:57 ` [PATCH v4 06/12] builtin/history: implement "reword" subcommand Patrick Steinhardt
2025-10-14 11:04 ` Karthik Nayak
2025-10-21 11:43 ` Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 07/12] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 08/12] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-10-02 9:25 ` Kristoffer Haugsbakk
2025-10-14 12:35 ` Karthik Nayak
2025-10-21 11:44 ` Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 09/12] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 10/12] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-10-02 9:28 ` Kristoffer Haugsbakk
2025-10-02 10:24 ` Patrick Steinhardt
2025-10-14 13:08 ` Karthik Nayak
2025-10-01 15:57 ` [PATCH v4 11/12] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-10-01 15:57 ` [PATCH v4 12/12] builtin/history: implement "split" subcommand Patrick Steinhardt
2025-10-14 13:38 ` Karthik Nayak
2025-10-21 11:44 ` Patrick Steinhardt
2025-10-21 21:19 ` D. Ben Knoble
2025-10-27 9:58 ` Patrick Steinhardt
2025-10-14 13:41 ` [PATCH v4 00/12] Introduce git-history(1) command for easy history editing Karthik Nayak
2025-10-14 16:47 ` Junio C Hamano
2025-10-21 14:15 ` [PATCH v5 " Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 01/12] wt-status: provide function to expose status for trees Patrick Steinhardt
2025-10-21 20:38 ` Junio C Hamano
2025-10-21 14:15 ` [PATCH v5 02/12] replay: extract logic to pick commits Patrick Steinhardt
2025-10-21 20:41 ` Junio C Hamano
2025-10-21 14:15 ` [PATCH v5 03/12] replay: stop using `the_repository` Patrick Steinhardt
2025-10-21 20:48 ` Junio C Hamano
2025-10-21 20:52 ` Junio C Hamano
2025-10-21 14:15 ` [PATCH v5 04/12] replay: parse commits before dereferencing them Patrick Steinhardt
2025-10-21 20:57 ` Junio C Hamano
2025-10-27 9:57 ` Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 05/12] builtin: add new "history" command Patrick Steinhardt
2025-10-21 21:15 ` Junio C Hamano
2025-10-27 9:57 ` Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 06/12] builtin/history: implement "reword" subcommand Patrick Steinhardt
2025-10-21 21:34 ` Junio C Hamano
2025-10-21 21:43 ` D. Ben Knoble
2025-10-27 9:58 ` Patrick Steinhardt
2025-10-27 9:58 ` Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 07/12] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 08/12] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 09/12] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 10/12] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-10-21 14:15 ` [PATCH v5 11/12] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-10-21 14:16 ` [PATCH v5 12/12] builtin/history: implement "split" subcommand Patrick Steinhardt
2025-10-21 18:53 ` [PATCH v5 00/12] Introduce git-history(1) command for easy history editing Junio C Hamano
2025-10-27 11:33 ` [PATCH v6 00/11] " Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 01/11] wt-status: provide function to expose status for trees Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 02/11] replay: extract logic to pick commits Patrick Steinhardt
2025-11-17 16:27 ` Phillip Wood
2025-11-20 7:01 ` Elijah Newren
2025-10-27 11:33 ` [PATCH v6 03/11] replay: stop using `the_repository` Patrick Steinhardt
2025-11-20 7:01 ` Elijah Newren
2025-12-02 18:47 ` Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 04/11] builtin: add new "history" command Patrick Steinhardt
2025-11-17 16:28 ` Phillip Wood
2025-12-02 18:48 ` Patrick Steinhardt
2025-11-20 7:02 ` Elijah Newren
2025-12-02 18:48 ` Patrick Steinhardt
2025-12-02 22:44 ` D. Ben Knoble
2025-12-03 10:48 ` Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 05/11] builtin/history: implement "reword" subcommand Patrick Steinhardt
2025-11-17 16:27 ` Phillip Wood
2025-12-02 18:50 ` Patrick Steinhardt
2025-12-10 9:52 ` Phillip Wood
2025-11-20 7:03 ` Elijah Newren
2025-12-02 18:50 ` Patrick Steinhardt
2025-11-25 8:31 ` SZEDER Gábor
2025-12-02 18:50 ` Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 06/11] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-11-20 7:03 ` Elijah Newren
2025-10-27 11:33 ` [PATCH v6 07/11] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-11-20 7:03 ` Elijah Newren
2025-11-20 15:05 ` Phillip Wood
2025-12-02 18:48 ` Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 08/11] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-11-20 7:03 ` Elijah Newren
2025-11-20 15:05 ` Phillip Wood
2025-10-27 11:33 ` [PATCH v6 09/11] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-11-20 7:04 ` Elijah Newren
2025-11-20 15:05 ` Phillip Wood
2025-12-02 18:49 ` Patrick Steinhardt
2025-10-27 11:33 ` [PATCH v6 10/11] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-11-20 7:04 ` Elijah Newren
2025-10-27 11:33 ` [PATCH v6 11/11] builtin/history: implement "split" subcommand Patrick Steinhardt
2025-11-20 7:05 ` Elijah Newren
2025-12-02 18:49 ` Patrick Steinhardt
2025-11-21 14:31 ` Phillip Wood
2025-12-02 18:51 ` Patrick Steinhardt
2025-12-10 9:51 ` Phillip Wood
2025-12-19 13:00 ` Patrick Steinhardt
2025-11-12 19:13 ` [PATCH v6 00/11] Introduce git-history(1) command for easy history editing Sergey Organov
2025-11-20 7:07 ` Elijah Newren
2025-11-20 20:28 ` Junio C Hamano
2025-11-20 20:40 ` Elijah Newren
2025-11-20 20:49 ` Junio C Hamano
2025-11-20 22:02 ` Elijah Newren
2025-11-21 14:31 ` Phillip Wood
2025-11-21 16:01 ` Junio C Hamano
2025-11-23 2:54 ` Elijah Newren
2025-12-02 18:49 ` Patrick Steinhardt
2025-12-05 8:49 ` Elijah Newren
2025-12-09 7:53 ` Patrick Steinhardt
2025-12-09 17:43 ` Martin von Zweigbergk
2025-12-10 11:32 ` Phillip Wood
2025-12-10 6:55 ` Elijah Newren
2025-12-09 18:29 ` Kristoffer Haugsbakk
2025-12-12 22:00 ` Working on top of mega merges D. Ben Knoble
2025-11-23 2:30 ` [PATCH v6 00/11] Introduce git-history(1) command for easy history editing Elijah Newren
2025-11-24 16:31 ` Phillip Wood
2025-11-25 3:39 ` Elijah Newren
2025-12-03 10:48 ` [PATCH v7 00/12] " Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 01/12] wt-status: provide function to expose status for trees Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 02/12] replay: extract logic to pick commits Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 03/12] replay: stop using `the_repository` Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 04/12] builtin: add new "history" command Patrick Steinhardt
2025-12-22 17:11 ` Kristoffer Haugsbakk
2026-01-06 15:41 ` Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 05/12] builtin/history: implement "reword" subcommand Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 06/12] add-patch: split out header from "add-interactive.h" Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 07/12] add-patch: split out `struct interactive_options` Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 08/12] add-patch: remove dependency on "add-interactive" subsystem Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 09/12] add-patch: add support for in-memory index patching Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 10/12] add-patch: allow disabling editing of hunks Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 11/12] cache-tree: allow writing in-memory index as tree Patrick Steinhardt
2025-12-03 10:48 ` [PATCH v7 12/12] builtin/history: implement "split" subcommand Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 0/7] Introduce git-history(1) command for easy history editing Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 1/7] builtin/replay: extract core logic to replay revisions Patrick Steinhardt
2026-01-07 17:53 ` D. Ben Knoble
2026-01-09 7:37 ` Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 2/7] builtin/replay: move core logic into "libgit.a" Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 3/7] replay: small set of cleanups Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 4/7] replay: yield the object ID of the final rewritten commit Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 5/7] wt-status: provide function to expose status for trees Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 6/7] builtin: add new "history" command Patrick Steinhardt
2026-01-07 10:10 ` [PATCH v8 7/7] builtin/history: implement "reword" subcommand Patrick Steinhardt
2026-01-07 18:01 ` D. Ben Knoble
2026-01-09 7:37 ` Patrick Steinhardt
2026-01-09 23:24 ` D. Ben Knoble
2026-01-10 1:20 ` Elijah Newren
2026-01-12 13:03 ` Patrick Steinhardt [this message]
2026-01-07 17:39 ` [PATCH v8 0/7] Introduce git-history(1) command for easy history editing D. Ben Knoble
2026-01-09 7:34 ` Patrick Steinhardt
2026-01-09 23:27 ` D. Ben Knoble
2026-01-09 8:35 ` [PATCH v9 " Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 1/7] builtin/replay: extract core logic to replay revisions Patrick Steinhardt
2026-01-10 1:14 ` Elijah Newren
2026-01-12 13:02 ` Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 2/7] builtin/replay: move core logic into "libgit.a" Patrick Steinhardt
2026-01-10 1:16 ` Elijah Newren
2026-01-12 13:02 ` Patrick Steinhardt
2026-01-13 6:00 ` Elijah Newren
2026-01-13 7:31 ` Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 3/7] replay: small set of cleanups Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 4/7] replay: yield the object ID of the final rewritten commit Patrick Steinhardt
2026-01-10 1:17 ` Elijah Newren
2026-01-12 13:03 ` Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 5/7] wt-status: provide function to expose status for trees Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 6/7] builtin: add new "history" command Patrick Steinhardt
2026-01-10 1:17 ` Elijah Newren
2026-01-12 13:02 ` Patrick Steinhardt
2026-01-09 8:35 ` [PATCH v9 7/7] builtin/history: implement "reword" subcommand Patrick Steinhardt
2026-01-10 1:26 ` [PATCH v9 0/7] Introduce git-history(1) command for easy history editing Elijah Newren
2026-01-10 17:14 ` SZEDER Gábor
2026-01-12 13:03 ` Patrick Steinhardt
2026-01-11 5:58 ` [PATCH 0/2] Some Elijah Newren
2026-01-11 5:58 ` [PATCH v9 8/7] SQUASH ME: Fixups Elijah Newren
2026-01-11 5:58 ` [PATCH v9 9/7] history: fix detached HEAD handling Elijah Newren
2026-01-11 6:15 ` [PATCH 0/2] Some Elijah Newren
2026-01-12 13:02 ` Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 0/8] Introduce git-history(1) command for easy history editing Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 1/8] builtin/replay: extract core logic to replay revisions Patrick Steinhardt
2026-01-12 15:08 ` Junio C Hamano
2026-01-12 15:37 ` Patrick Steinhardt
2026-01-13 6:00 ` Elijah Newren
2026-01-13 7:31 ` Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 2/8] builtin/replay: move core logic into "libgit.a" Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 3/8] replay: small set of cleanups Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 4/8] replay: support empty commit ranges Patrick Steinhardt
2026-01-13 6:00 ` Elijah Newren
2026-01-13 7:30 ` Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 5/8] replay: support updating detached HEAD Patrick Steinhardt
2026-01-13 6:00 ` Elijah Newren
2026-01-13 7:30 ` Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 6/8] wt-status: provide function to expose status for trees Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 7/8] builtin: add new "history" command Patrick Steinhardt
2026-01-12 14:15 ` [PATCH v10 8/8] builtin/history: implement "reword" subcommand Patrick Steinhardt
2026-01-13 6:01 ` Elijah Newren
2026-01-13 6:01 ` [PATCH v10 0/8] Introduce git-history(1) command for easy history editing Elijah Newren
2026-01-13 9:54 ` [PATCH v11 " Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 1/8] builtin/replay: extract core logic to replay revisions Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 2/8] builtin/replay: move core logic into "libgit.a" Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 3/8] replay: small set of cleanups Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 4/8] replay: support empty commit ranges Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 5/8] replay: support updating detached HEAD Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 6/8] wt-status: provide function to expose status for trees Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 7/8] builtin: add new "history" command Patrick Steinhardt
2026-01-13 9:54 ` [PATCH v11 8/8] builtin/history: implement "reword" subcommand Patrick Steinhardt
2026-01-16 16:28 ` SZEDER Gábor
2026-01-17 22:56 ` Elijah Newren
2026-01-18 17:50 ` Junio C Hamano
2026-02-03 0:01 ` Junio C Hamano
2026-02-05 8:19 ` Patrick Steinhardt
2026-01-16 6:43 ` [PATCH v11 0/8] Introduce git-history(1) command for easy history editing Elijah Newren
2026-01-16 15:21 ` Junio C Hamano
2026-01-16 16:32 ` SZEDER Gábor
2026-01-21 19:02 ` 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=aWTxI-j__VGkPrVb@pks.im \
--to=ps@pks.im \
--cc=ben.knoble@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jn.avila@free.fr \
--cc=karthik.188@gmail.com \
--cc=kristofferhaugsbakk@fastmail.com \
--cc=mail@beyermatthias.de \
--cc=martinvonz@gmail.com \
--cc=newren@gmail.com \
--cc=phillip.wood123@gmail.com \
--cc=sorganov@gmail.com \
--cc=szeder.dev@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.