From patchwork Fri Apr 28 08:35:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oswald Buddenhagen X-Patchwork-Id: 13226080 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 02A2EC77B60 for ; Fri, 28 Apr 2023 08:35:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345341AbjD1Ifg (ORCPT ); Fri, 28 Apr 2023 04:35:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229532AbjD1Iff (ORCPT ); Fri, 28 Apr 2023 04:35:35 -0400 Received: from bluemchen.kde.org (bluemchen.kde.org [IPv6:2001:470:142:8::100]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE46B210B for ; Fri, 28 Apr 2023 01:35:30 -0700 (PDT) Received: from ugly.fritz.box (localhost [127.0.0.1]) by bluemchen.kde.org (Postfix) with ESMTP id C5564241BC; Fri, 28 Apr 2023 04:35:28 -0400 (EDT) Received: by ugly.fritz.box (masqmail 0.3.4, from userid 1000) id 1psJZg-82w-00; Fri, 28 Apr 2023 10:35:28 +0200 From: Oswald Buddenhagen To: git@vger.kernel.org Cc: Junio C Hamano , Kristoffer Haugsbakk Subject: [PATCH v2] sequencer: beautify subject of reverts of reverts Date: Fri, 28 Apr 2023 10:35:28 +0200 Message-Id: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de> X-Mailer: git-send-email 2.40.0.152.g15d061e6df MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org 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 Cc: Junio C Hamano Cc: Kristoffer Haugsbakk --- 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 ""' 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)) { + /* + * 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 From patchwork Wed Aug 9 17:15:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> X-Patchwork-Id: 13348236 Return-Path: <git-owner@vger.kernel.org> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E304C001E0 for <git@archiver.kernel.org>; Wed, 9 Aug 2023 17:15:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232906AbjHIRPo (ORCPT <rfc822;git@archiver.kernel.org>); Wed, 9 Aug 2023 13:15:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232817AbjHIRPi (ORCPT <rfc822;git@vger.kernel.org>); Wed, 9 Aug 2023 13:15:38 -0400 Received: from bluemchen.kde.org (bluemchen.kde.org [IPv6:2001:470:142:8::100]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E108F1FF5 for <git@vger.kernel.org>; Wed, 9 Aug 2023 10:15:37 -0700 (PDT) Received: from ugly.fritz.box (localhost [127.0.0.1]) by bluemchen.kde.org (Postfix) with ESMTP id DA8FE24312; Wed, 9 Aug 2023 13:15:31 -0400 (EDT) Received: by ugly.fritz.box (masqmail 0.3.6-dev, from userid 1000) id 1qTmmR-lE7-00; Wed, 09 Aug 2023 19:15:31 +0200 From: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> To: git@vger.kernel.org Cc: Junio C Hamano <gitster@pobox.com> Subject: [PATCH v3 2/2] doc: revert: add discussion Date: Wed, 9 Aug 2023 19:15:31 +0200 Message-Id: <20230809171531.2564807-2-oswald.buddenhagen@gmx.de> X-Mailer: git-send-email 2.40.0.152.g15d061e6df In-Reply-To: <20230809171531.2564807-1-oswald.buddenhagen@gmx.de> References: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de> <20230809171531.2564807-1-oswald.buddenhagen@gmx.de> MIME-Version: 1.0 Precedence: bulk List-ID: <git.vger.kernel.org> X-Mailing-List: git@vger.kernel.org The section is inspired by git-commit.txt. Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> --- Cc: Junio C Hamano <gitster@pobox.com> --- while thinking about what to write, i came up with an idea for another improvement: with (implicit) --edit, the template message would end up being: This reverts commit <sha1>, because <PUT REASON HERE>. --- Documentation/git-revert.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt index d2e10d3dce..2b52dc89a8 100644 --- a/Documentation/git-revert.txt +++ b/Documentation/git-revert.txt @@ -142,6 +142,16 @@ EXAMPLES changes. The revert only modifies the working tree and the index. +DISCUSSION +---------- + +While git creates a basic commit message automatically, you really +should not leave it at that. In particular, it is _strongly_ +recommended to explain why the original commit is being reverted. +Repeatedly reverting reversions yields increasingly unwieldy +commit subjects; latest when you arrive at 'Reapply "Reapply +"<original subject>""' you should get creative. + CONFIGURATION -------------