All of lore.kernel.org
 help / color / mirror / Atom feed
From: "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Denton Liu <liu.denton@gmail.com>,
	ZheNing Hu <adlternative@gmail.com>,
	ZheNing Hu <adlternative@gmail.com>
Subject: [PATCH] format-patch: allow a non-integral version numbers
Date: Thu, 25 Feb 2021 16:15:52 +0000	[thread overview]
Message-ID: <pull.885.git.1614269753194.gitgitgadget@gmail.com> (raw)

From: ZheNing Hu <adlternative@gmail.com>

Usually we can only use `format-patch -v<n>` to generate integral
version numbers patches, but if we can provide `format-patch` with
non-integer versions numbers of patches, this may help us to send patches
such as "v1.1" versions sometimes.

Signed-off-by: ZheNing Hu <adlternative@gmail.com>
---
    [GSOC] format-patch: allow a non-integral version numbers
    
     * format-patch previously only integer version number -v<n>, now trying
       to provide a non-integer version.
    
    this want to fix #882 Thanks.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-885%2Fadlternative%2Fformat_patch_non_intergral-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-885/adlternative/format_patch_non_intergral-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/885

 Documentation/git-format-patch.txt |  6 +++---
 builtin/log.c                      | 20 ++++++++++----------
 log-tree.c                         |  4 ++--
 revision.h                         |  2 +-
 t/t4014-format-patch.sh            |  8 ++++----
 5 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 3e49bf221087..0cc39dbf573c 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -215,12 +215,12 @@ populated with placeholder text.
 
 -v <n>::
 --reroll-count=<n>::
-	Mark the series as the <n>-th iteration of the topic. The
+	Mark the series as the specified version of the topic. The
 	output filenames have `v<n>` prepended to them, and the
 	subject prefix ("PATCH" by default, but configurable via the
 	`--subject-prefix` option) has ` v<n>` appended to it.  E.g.
-	`--reroll-count=4` may produce `v4-0001-add-makefile.patch`
-	file that has "Subject: [PATCH v4 1/20] Add makefile" in it.
+	`--reroll-count 4.4` may produce `v4.4-0001-add-makefile.patch`
+	file that has "Subject: [PATCH v4.4 1/20] Add makefile" in it.
 
 --to=<email>::
 	Add a `To:` header to the email headers. This is in addition
diff --git a/builtin/log.c b/builtin/log.c
index f67b67d80ed1..72af140b812e 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1662,13 +1662,13 @@ static void print_bases(struct base_tree_info *bases, FILE *file)
 	oidclr(&bases->base_commit);
 }
 
-static const char *diff_title(struct strbuf *sb, int reroll_count,
+static const char *diff_title(struct strbuf *sb, const char *reroll_count,
 		       const char *generic, const char *rerolled)
 {
-	if (reroll_count <= 0)
+	if (!reroll_count)
 		strbuf_addstr(sb, generic);
 	else /* RFC may be v0, so allow -v1 to diff against v0 */
-		strbuf_addf(sb, rerolled, reroll_count - 1);
+		strbuf_addf(sb, rerolled, "last version");
 	return sb->buf;
 }
 
@@ -1717,7 +1717,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	struct strbuf buf = STRBUF_INIT;
 	int use_patch_format = 0;
 	int quiet = 0;
-	int reroll_count = -1;
+	const char *reroll_count = NULL;
 	char *cover_from_description_arg = NULL;
 	char *branch_name = NULL;
 	char *base_commit = NULL;
@@ -1751,8 +1751,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 			    N_("use <sfx> instead of '.patch'")),
 		OPT_INTEGER(0, "start-number", &start_number,
 			    N_("start numbering patches at <n> instead of 1")),
-		OPT_INTEGER('v', "reroll-count", &reroll_count,
-			    N_("mark the series as Nth re-roll")),
+		OPT_STRING('v', "reroll-count", &reroll_count, N_("reroll-count"),
+			    N_("mark the series as specified version re-roll")),
 		OPT_INTEGER(0, "filename-max-length", &fmt_patch_name_max,
 			    N_("max length of output filename")),
 		OPT_CALLBACK_F(0, "rfc", &rev, NULL,
@@ -1862,9 +1862,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	if (cover_from_description_arg)
 		cover_from_description_mode = parse_cover_from_description(cover_from_description_arg);
 
-	if (0 < reroll_count) {
+	if (reroll_count) {
 		struct strbuf sprefix = STRBUF_INIT;
-		strbuf_addf(&sprefix, "%s v%d",
+		strbuf_addf(&sprefix, "%s v%s",
 			    rev.subject_prefix, reroll_count);
 		rev.reroll_count = reroll_count;
 		rev.subject_prefix = strbuf_detach(&sprefix, NULL);
@@ -2080,7 +2080,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 		rev.idiff_oid2 = get_commit_tree_oid(list[0]);
 		rev.idiff_title = diff_title(&idiff_title, reroll_count,
 					     _("Interdiff:"),
-					     _("Interdiff against v%d:"));
+					     _("Interdiff against %s:"));
 	}
 
 	if (creation_factor < 0)
@@ -2099,7 +2099,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 		rev.creation_factor = creation_factor;
 		rev.rdiff_title = diff_title(&rdiff_title, reroll_count,
 					     _("Range-diff:"),
-					     _("Range-diff against v%d:"));
+					     _("Range-diff against %s:"));
 	}
 
 	if (!signature) {
diff --git a/log-tree.c b/log-tree.c
index 4531cebfab38..5f2e08ebcaab 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -369,8 +369,8 @@ void fmt_output_subject(struct strbuf *filename,
 	int start_len = filename->len;
 	int max_len = start_len + info->patch_name_max - (strlen(suffix) + 1);
 
-	if (0 < info->reroll_count)
-		strbuf_addf(filename, "v%d-", info->reroll_count);
+	if (info->reroll_count)
+		strbuf_addf(filename, "v%s-", info->reroll_count);
 	strbuf_addf(filename, "%04d-%s", nr, subject);
 
 	if (max_len < filename->len)
diff --git a/revision.h b/revision.h
index e6be3c845e66..097d08354c61 100644
--- a/revision.h
+++ b/revision.h
@@ -235,7 +235,7 @@ struct rev_info {
 	const char	*mime_boundary;
 	const char	*patch_suffix;
 	int		numbered_files;
-	int		reroll_count;
+	const char	*reroll_count;
 	char		*message_id;
 	struct ident_split from_ident;
 	struct string_list *ref_message_ids;
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 66630c8413d5..b911e08f0810 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -372,10 +372,10 @@ test_expect_success 'filename limit applies only to basename' '
 
 test_expect_success 'reroll count' '
 	rm -fr patches &&
-	git format-patch -o patches --cover-letter --reroll-count 4 main..side >list &&
-	! grep -v "^patches/v4-000[0-3]-" list &&
+	git format-patch -o patches --cover-letter --reroll-count 4.4 main..side >list &&
+	! grep -v "^patches/v4.4-000[0-3]-" list &&
 	sed -n -e "/^Subject: /p" $(cat list) >subjects &&
-	! grep -v "^Subject: \[PATCH v4 [0-3]/3\] " subjects
+	! grep -v "^Subject: \[PATCH v4.4 [0-3]/3\] " subjects
 '
 
 test_expect_success 'reroll count (-v)' '
@@ -2252,7 +2252,7 @@ test_expect_success 'interdiff: cover-letter' '
 
 test_expect_success 'interdiff: reroll-count' '
 	git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop &&
-	test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch
+	test_i18ngrep "^Interdiff ..* last version:$" v2-0000-cover-letter.patch
 '
 
 test_expect_success 'interdiff: solo-patch' '

base-commit: 966e671106b2fd38301e7c344c754fd118d0bb07
-- 
gitgitgadget

             reply	other threads:[~2021-02-25 16:18 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-25 16:15 ZheNing Hu via GitGitGadget [this message]
2021-02-25 17:56 ` [PATCH] format-patch: allow a non-integral version numbers Eric Sunshine
2021-02-27  7:00   ` ZheNing Hu
2021-02-25 18:13 ` Junio C Hamano
2021-02-27  7:30   ` ZheNing Hu
2021-03-17 11:46   ` Đoàn Trần Công Danh
2021-03-17 19:17     ` Junio C Hamano
2021-03-01  8:40 ` [PATCH v2] " ZheNing Hu via GitGitGadget
2021-03-03  3:44   ` Junio C Hamano
2021-03-03  9:02   ` Denton Liu
2021-03-04  0:54     ` Junio C Hamano
2021-03-04  2:08       ` ZheNing Hu
2021-03-04  3:27         ` Eric Sunshine
2021-03-04  8:41           ` Denton Liu
2021-03-04 12:12   ` [PATCH v3] " ZheNing Hu via GitGitGadget
2021-03-04 12:49     ` Denton Liu
2021-03-05  4:56       ` ZheNing Hu
2021-03-05  7:10     ` [PATCH v4] " ZheNing Hu via GitGitGadget
2021-03-15 23:41       ` Eric Sunshine
2021-03-16  5:48         ` ZheNing Hu
2021-03-16  6:15           ` Eric Sunshine
2021-03-17 17:27             ` Junio C Hamano
2021-03-16  8:25       ` [PATCH v5] " ZheNing Hu via GitGitGadget
2021-03-16 23:36         ` Eric Sunshine
2021-03-17  2:05           ` ZheNing Hu
2021-03-18  6:00         ` [PATCH v6] " ZheNing Hu via GitGitGadget
2021-03-19  6:00           ` Eric Sunshine
2021-03-19  7:25             ` ZheNing Hu
2021-03-19 11:21           ` [PATCH v7] " ZheNing Hu via GitGitGadget
2021-03-19 16:01             ` Junio C Hamano
2021-03-20  3:08               ` ZheNing Hu
2021-03-19 17:28             ` Junio C Hamano
2021-03-20  3:04               ` ZheNing Hu
2021-03-20 14:56             ` [PATCH v8] " ZheNing Hu via GitGitGadget
2021-03-20 19:55               ` Junio C Hamano
2021-03-21  2:45                 ` ZheNing Hu
2021-03-21  4:05               ` Eric Sunshine
2021-03-21  5:45                 ` Junio C Hamano
2021-03-21  5:54                   ` Eric Sunshine
2021-03-24  8:46                     ` Denton Liu
2021-03-21  7:22                 ` ZheNing Hu
2021-03-21  9:00               ` [PATCH v9] " ZheNing Hu via GitGitGadget
2021-03-23  5:31                 ` Eric Sunshine
2021-03-23  6:42                   ` Junio C Hamano
2021-03-23  8:53                   ` ZheNing Hu
2021-03-23  9:16                     ` ZheNing Hu
2021-03-23 11:12                 ` [PATCH v10] " ZheNing Hu via GitGitGadget
2021-03-24  3:58                   ` Eric Sunshine
2021-03-24  4:43                     ` ZheNing Hu

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.885.git.1614269753194.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=adlternative@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=liu.denton@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.