From 883cb1b8f86d437a9d664ec046fa66e5e24f4a19 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Sat, 2 Sep 2023 09:20:35 +0200 Subject: sequencer: beautify subject of reverts of reverts Instead of generating a silly-looking `Revert "Revert "foo""`, make it a more humane `Reapply "foo"`. This is done for two reasons: - To cover the actually common case of just a double revert. - To encourage people to rewrite summaries of recursive reverts by setting an example (a subsequent commit will also do this explicitly in the documentation). To achieve these goals, the mechanism does not need to be particularly sophisticated. Therefore, more complicated alternatives which would "compress more efficiently" have not been implemented. Signed-off-by: Oswald Buddenhagen Signed-off-by: Junio C Hamano --- sequencer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'sequencer.c') diff --git a/sequencer.c b/sequencer.c index 5e0c15a16b..7dc13fdcca 100644 --- a/sequencer.c +++ b/sequencer.c @@ -2249,6 +2249,8 @@ static int do_pick_commit(struct repository *r, */ if (command == TODO_REVERT) { + const char *orig_subject; + base = commit; base_label = msg.label; next = parent; @@ -2256,6 +2258,15 @@ static int do_pick_commit(struct repository *r, if (opts->commit_use_reference) { strbuf_addstr(&msgbuf, "# *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***"); + } else if (skip_prefix(msg.subject, "Revert \"", &orig_subject) && + /* + * We don't touch pre-existing repeated reverts, because + * theoretically these can be nested arbitrarily deeply, + * thus requiring excessive complexity to deal with. + */ + !starts_with(orig_subject, "Revert \"")) { + strbuf_addstr(&msgbuf, "Reapply \""); + strbuf_addstr(&msgbuf, orig_subject); } else { strbuf_addstr(&msgbuf, "Revert \""); strbuf_addstr(&msgbuf, msg.subject); -- cgit v1.2.3