All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>, git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Kristoffer Haugsbakk <code@khaugsbakk.name>
Subject: Re: [PATCH v2] sequencer: beautify subject of reverts of reverts
Date: Wed, 17 May 2023 10:05:51 +0100	[thread overview]
Message-ID: <3f5e4116-54e6-9753-f925-ed4a9f6e3518@gmail.com> (raw)
In-Reply-To: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de>

Hi Oswald

On 28/04/2023 09:35, Oswald Buddenhagen wrote:
> Instead of generating a silly-looking `Revert "Revert "foo""`, make it
> a more humane `Reapply "foo"`.
> 
> The alternative `Revert^2 "foo"`, etc. was considered, but it was deemed
> over-engineered and "too nerdy". Instead, people should get creative
> with the subjects when they recurse reverts that deeply. The proposed
> change encourages that by example and explicit recommendation.
> 
> Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
> Cc: Junio C Hamano <gitster@pobox.com>
> Cc: Kristoffer Haugsbakk <code@khaugsbakk.name>
> ---
> v2:
> - add discussion to commit message
> - add paragraph to docu
> - add test
> - use skip_prefix() instead of starts_with()
> - catch pre-existing double reverts
> ---
>   Documentation/git-revert.txt |  6 ++++++
>   sequencer.c                  | 14 ++++++++++++++
>   t/t3515-revert-subjects.sh   | 32 ++++++++++++++++++++++++++++++++
>   3 files changed, 52 insertions(+)
>   create mode 100755 t/t3515-revert-subjects.sh
> 
> diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt
> index d2e10d3dce..e8fa513607 100644
> --- a/Documentation/git-revert.txt
> +++ b/Documentation/git-revert.txt
> @@ -31,6 +31,12 @@ both will discard uncommitted changes in your working directory.
>   See "Reset, restore and revert" in linkgit:git[1] for the differences
>   between the three commands.
>   
> +The command generates the subject 'Revert "<title>"' for the resulting
> +commit, assuming the original commit's subject is '<title>'.  Reverting
> +such a reversion commit in turn yields the subject 'Reapply "<title>"'.
> +These can of course be modified in the editor when the reason for
> +reverting is described.
> +
>   OPTIONS
>   -------
>   <commit>...::
> diff --git a/sequencer.c b/sequencer.c
> index 3be23d7ca2..61e466470e 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -2227,13 +2227,27 @@ static int do_pick_commit(struct repository *r,
>   	 */
>   
>   	if (command == TODO_REVERT) {
> +		const char *orig_subject;
> +
>   		base = commit;
>   		base_label = msg.label;
>   		next = parent;
>   		next_label = msg.parent_label;
>   		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)) {
> +			if (skip_prefix(orig_subject, "Revert \"", &orig_subject)) {

I think it is probably worth adding

	if (starts_with(orig_subject, "Revert \""))
		strbuf_addstr(&msgbuf, "Revert \"");
	else

here to make sure that we don't end up with a subject starting "Revert 
\"Reapply \"Revert ...".

Best Wishes

Phillip

> +				/*
> +				 * This prevents the generation of somewhat unintuitive (even if
> +				 * not incorrect) 'Reapply "Revert "' titles from legacy double
> +				 * reverts. Fixing up deeper recursions is left to the user.
> +				 */
> +				strbuf_addstr(&msgbuf, "Revert \"Reapply \"");
> +			} else {
> +				strbuf_addstr(&msgbuf, "Reapply \"");
> +			}
> +			strbuf_addstr(&msgbuf, orig_subject);
>   		} else {
>   			strbuf_addstr(&msgbuf, "Revert \"");
>   			strbuf_addstr(&msgbuf, msg.subject);
> diff --git a/t/t3515-revert-subjects.sh b/t/t3515-revert-subjects.sh
> new file mode 100755
> index 0000000000..ea4319fd15
> --- /dev/null
> +++ b/t/t3515-revert-subjects.sh
> @@ -0,0 +1,32 @@
> +#!/bin/sh
> +
> +test_description='git revert produces the expected subject'
> +
> +. ./test-lib.sh
> +
> +test_expect_success 'fresh reverts' '
> +    test_commit --no-tag A file1 &&
> +    test_commit --no-tag B file1 &&
> +    git revert --no-edit HEAD &&
> +    echo "Revert \"B\"" > expect &&
> +    git log -1 --pretty=%s > actual &&
> +    test_cmp expect actual &&
> +    git revert --no-edit HEAD &&
> +    echo "Reapply \"B\"" > expect &&
> +    git log -1 --pretty=%s > actual &&
> +    test_cmp expect actual &&
> +    git revert --no-edit HEAD &&
> +    echo "Revert \"Reapply \"B\"\"" > expect &&
> +    git log -1 --pretty=%s > actual &&
> +    test_cmp expect actual
> +'
> +
> +test_expect_success 'legacy double revert' '
> +    test_commit --no-tag "Revert \"Revert \"B\"\"" file1 &&
> +    git revert --no-edit HEAD &&
> +    echo "Revert \"Reapply \"B\"\"" > expect &&
> +    git log -1 --pretty=%s > actual &&
> +    test_cmp expect actual
> +'
> +
> +test_done

  parent reply	other threads:[~2023-05-17  9:06 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-28  8:35 [PATCH v2] sequencer: beautify subject of reverts of reverts Oswald Buddenhagen
2023-04-28 18:35 ` Junio C Hamano
2023-04-28 19:11   ` Oswald Buddenhagen
2023-05-01 16:44     ` Junio C Hamano
2023-05-01 19:10       ` Oswald Buddenhagen
2023-05-01 19:12         ` Junio C Hamano
2023-05-05 17:25     ` Junio C Hamano
2023-05-17  9:05 ` Phillip Wood [this message]
2023-05-17 10:00   ` Oswald Buddenhagen
2023-05-17 11:20     ` Phillip Wood
2023-05-17 17:02       ` Oswald Buddenhagen
2023-05-18  9:58         ` Phillip Wood
2023-05-18 16:28           ` Junio C Hamano
2023-07-28  5:26             ` Linus Arver
2023-07-28  9:45               ` Oswald Buddenhagen
2023-07-28 15:10                 ` Junio C Hamano
2023-07-28 15:37                   ` Oswald Buddenhagen
2023-07-28 16:31                     ` Junio C Hamano
2023-07-28 16:47                       ` Oswald Buddenhagen
2023-07-28 17:36                   ` Linus Arver
2023-08-09 17:15 ` [PATCH v3 1/2] " Oswald Buddenhagen
2023-08-09 17:15   ` [PATCH v3 2/2] doc: revert: add discussion Oswald Buddenhagen
2023-08-10 21:50     ` Linus Arver
2023-08-10 22:00       ` Linus Arver
2023-08-11 15:10         ` Phillip Wood
2023-08-12  6:25           ` Oswald Buddenhagen
2023-08-13 22:09             ` Junio C Hamano
2023-08-14 14:13               ` Oswald Buddenhagen
2023-08-11 12:49       ` Oswald Buddenhagen
2023-08-11 23:00         ` Linus Arver
2023-08-12  7:19           ` Oswald Buddenhagen
2023-09-07 21:29             ` Linus Arver
2023-08-11 15:08       ` Phillip Wood
2023-08-11 17:10         ` Junio C Hamano
2023-08-11 17:05       ` Junio C Hamano
2023-08-11 17:44         ` Re* " Junio C Hamano
2023-08-11 17:53           ` Junio C Hamano
2023-08-11 17:56             ` rsbecker
2023-08-11 18:16           ` Eric Sunshine
2023-08-11 18:16           ` Oswald Buddenhagen
2023-08-11 19:43             ` Junio C Hamano
2023-08-11 15:05   ` [PATCH v3 1/2] sequencer: beautify subject of reverts of reverts Phillip Wood
2023-08-11 16:59     ` Junio C Hamano
2023-08-11 17:13       ` Oswald Buddenhagen
2023-08-21 17:07   ` [PATCH v4 " Oswald Buddenhagen
2023-08-21 17:07     ` [PATCH v4 2/2] git-revert.txt: add discussion Oswald Buddenhagen
2023-08-21 18:32     ` [PATCH v4 1/2] sequencer: beautify subject of reverts of reverts Junio C Hamano
2023-08-23 20:08     ` Taylor Blau
2023-08-23 21:38       ` Junio C Hamano
2023-08-24  6:14         ` Oswald Buddenhagen
2023-09-02  7:20         ` [PATCH v5] " Oswald Buddenhagen
2023-09-02 22:24           ` Junio C Hamano
2023-09-11 20:12           ` Kristoffer Haugsbakk

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=3f5e4116-54e6-9753-f925-ed4a9f6e3518@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=code@khaugsbakk.name \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=oswald.buddenhagen@gmx.de \
    --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.