All of lore.kernel.org
 help / color / mirror / Atom feed
From: "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Bradley M. Kuhn" <bkuhn@sfconservancy.org>,
	Junio C Hamano <gitster@pobox.com>,
	Brandon Casey <drafnel@gmail.com>,
	Shourya Shukla <periperidip@gmail.com>,
	Christian Couder <christian.couder@gmail.com>,
	Rafael Silva <rafaeloliveira.cs@gmail.com>,
	ZheNing Hu <adlternative@gmail.com>,
	ZheNing Hu <adlternative@gmail.com>
Subject: [PATCH v10 2/3] interpret-trailers: add own-identity option
Date: Thu, 18 Mar 2021 11:15:55 +0000	[thread overview]
Message-ID: <42590e95deeece6ba65e0432c3a59746e717fee3.1616066156.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.901.v10.git.1616066156.gitgitgadget@gmail.com>

From: ZheNing Hu <adlternative@gmail.com>

Beacuse `git commit --trailer="Signed-off-by: \
$(git config user.name) <$(git config user.email)>"`
is difficult for users to add their own identities,
so teach interpret-trailers a new option `--own-identity`
which allow those trailers with no value add the user’s own
identity. This will help the use of `commit --trailer` as
easy as `--signoff`.

Signed-off-by: ZheNing Hu <adlternative@gmail.com>
---
 Documentation/git-interpret-trailers.txt | 14 ++++++++++++++
 builtin/interpret-trailers.c             |  6 ++++--
 t/t7513-interpret-trailers.sh            | 12 ++++++++++++
 trailer.c                                | 18 ++++++++++++++++--
 trailer.h                                |  3 ++-
 5 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/Documentation/git-interpret-trailers.txt b/Documentation/git-interpret-trailers.txt
index 96ec6499f001..ace44446c3e3 100644
--- a/Documentation/git-interpret-trailers.txt
+++ b/Documentation/git-interpret-trailers.txt
@@ -84,6 +84,19 @@ OPTIONS
 	trailer to the input messages. See the description of this
 	command.
 
+--own-identity::
+	Used with `--trailer`. Those trailers without value with the
+	`--own-identity` option all will add the user's own identity.
+	For example,` git interpret-trailers --trailer "A:B" --trailer \
+	"Signed-off-by" --trailer "Helped-by" --own-identity --inplace a.txt`
+	will output:
+	"
+	A:B
+	Signed-off-by: C O Mitter <committer@example.com>
+	Helped-by: C O Mitter <committer@example.com>
+	"
+	in `a.txt`.
+
 --where <placement>::
 --no-where::
 	Specify where all new trailers will be added.  A setting
@@ -131,6 +144,7 @@ OPTIONS
 	when you know your input contains just the commit message itself
 	(and not an email or the output of `git format-patch`).
 
+
 CONFIGURATION VARIABLES
 -----------------------
 
diff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c
index 84748eafc01b..be7f502a58d7 100644
--- a/builtin/interpret-trailers.c
+++ b/builtin/interpret-trailers.c
@@ -47,6 +47,7 @@ static void new_trailers_clear(struct list_head *trailers)
 	list_for_each_safe(pos, tmp, trailers) {
 		item = list_entry(pos, struct new_trailer_item, list);
 		list_del(pos);
+		free(item->text);
 		free(item);
 	}
 }
@@ -66,7 +67,7 @@ static int option_parse_trailer(const struct option *opt,
 		return -1;
 
 	item = xmalloc(sizeof(*item));
-	item->text = arg;
+	item->text = xstrdup(arg);
 	item->where = where;
 	item->if_exists = if_exists;
 	item->if_missing = if_missing;
@@ -94,7 +95,8 @@ int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)
 	struct option options[] = {
 		OPT_BOOL(0, "in-place", &opts.in_place, N_("edit files in place")),
 		OPT_BOOL(0, "trim-empty", &opts.trim_empty, N_("trim empty trailers")),
-
+		OPT_BOOL(0, "own-identity", &opts.own_identity,
+			     N_("specify the user's own identity for omitted trailers value")),
 		OPT_CALLBACK(0, "where", NULL, N_("action"),
 			     N_("where to place the new trailer"), option_parse_where),
 		OPT_CALLBACK(0, "if-exists", NULL, N_("action"),
diff --git a/t/t7513-interpret-trailers.sh b/t/t7513-interpret-trailers.sh
index 6602790b5f4c..f82cee93bfb2 100755
--- a/t/t7513-interpret-trailers.sh
+++ b/t/t7513-interpret-trailers.sh
@@ -63,6 +63,18 @@ test_expect_success 'without config' '
 	test_cmp expected actual
 '
 
+test_expect_success 'without config with --own-identity' '
+	cat >expected <<-\EOF &&
+
+	Acked-by: A B <C>
+	Helped-by: C O Mitter <committer@example.com>
+	Signed-off-by: C O Mitter <committer@example.com>
+	EOF
+	git interpret-trailers --trailer "Acked-by: A B <C>" --trailer "Helped-by" \
+	--trailer "Signed-off-by" --own-identity empty >actual &&
+	test_cmp expected actual
+'
+
 test_expect_success 'without config in another order' '
 	sed -e "s/ Z\$/ /" >expected <<-\EOF &&
 
diff --git a/trailer.c b/trailer.c
index 249ed618ed8e..cd4f85e71c9a 100644
--- a/trailer.c
+++ b/trailer.c
@@ -690,8 +690,18 @@ static void add_arg_item(struct list_head *arg_head, char *tok, char *val,
 	list_add_tail(&new_item->list, arg_head);
 }
 
+static void add_user_own_identity(struct new_trailer_item *item)
+{
+	struct strbuf buf = STRBUF_INIT;
+	strbuf_addstr(&buf, item->text);
+	strbuf_add(&buf, "=", 1);
+	strbuf_addstr(&buf, fmt_name(WANT_COMMITTER_IDENT));
+	free(item->text);
+	item->text = buf.buf;
+}
+
 static void process_command_line_args(struct list_head *arg_head,
-				      struct list_head *new_trailer_head)
+				      struct list_head *new_trailer_head, int own_identity)
 {
 	struct arg_item *item;
 	struct strbuf tok = STRBUF_INIT;
@@ -728,6 +738,10 @@ static void process_command_line_args(struct list_head *arg_head,
 			error(_("empty trailer token in trailer '%.*s'"),
 			      (int) sb.len, sb.buf);
 			strbuf_release(&sb);
+		} else if (separator_pos == -1 && own_identity) {
+				add_user_own_identity(tr);
+				pos = pos->prev;
+				continue;
 		} else {
 			parse_trailer(&tok, &val, &conf, tr->text,
 				      separator_pos);
@@ -1048,7 +1062,7 @@ void process_trailers(const char *file,
 
 	if (!opts->only_input) {
 		LIST_HEAD(arg_head);
-		process_command_line_args(&arg_head, new_trailer_head);
+		process_command_line_args(&arg_head, new_trailer_head ,opts->own_identity);
 		process_trailers_lists(&head, &arg_head);
 	}
 
diff --git a/trailer.h b/trailer.h
index 795d2fccfd95..235dfdfa1978 100644
--- a/trailer.h
+++ b/trailer.h
@@ -57,7 +57,7 @@ struct trailer_info {
 struct new_trailer_item {
 	struct list_head list;
 
-	const char *text;
+	char *text;
 
 	enum trailer_where where;
 	enum trailer_if_exists if_exists;
@@ -73,6 +73,7 @@ struct process_trailer_options {
 	int no_divider;
 	int key_only;
 	int value_only;
+	int own_identity;
 	const struct strbuf *separator;
 	const struct strbuf *key_value_separator;
 	int (*filter)(const struct strbuf *, void *);
-- 
gitgitgadget


  parent reply	other threads:[~2021-03-18 11:16 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-11  7:16 [PATCH] [GSOC] commit: provides multiple common signatures ZheNing Hu via GitGitGadget
2021-03-11 15:03 ` Shourya Shukla
2021-03-12 11:41   ` ZheNing Hu
2021-03-11 17:28 ` Junio C Hamano
2021-03-12 12:01   ` ZheNing Hu
2021-03-12 13:22   ` ZheNing Hu
2021-03-12 15:54 ` [PATCH v2] [GSOC] commit: add trailer command ZheNing Hu via GitGitGadget
2021-03-14  4:19   ` Christian Couder
2021-03-14  7:09     ` ZheNing Hu
2021-03-14 22:45     ` Junio C Hamano
2021-03-14 13:02   ` [PATCH v3] [GSOC] commit: add --trailer option ZheNing Hu via GitGitGadget
2021-03-14 13:10     ` Rafael Silva
2021-03-14 14:13       ` ZheNing Hu
2021-03-14 15:58     ` [PATCH v4] " ZheNing Hu via GitGitGadget
2021-03-14 23:52       ` Junio C Hamano
2021-03-15  1:27         ` ZheNing Hu
2021-03-15  4:42           ` Junio C Hamano
2021-03-15  5:14             ` ZheNing Hu
2021-03-15  3:24       ` [PATCH v5] " ZheNing Hu via GitGitGadget
2021-03-15  5:33         ` Christian Couder
2021-03-15  5:41           ` Christian Couder
2021-03-15  5:46           ` ZheNing Hu
2021-03-15  6:35         ` [PATCH v6] " ZheNing Hu via GitGitGadget
2021-03-15  8:02           ` Christian Couder
2021-03-15  8:21             ` ZheNing Hu
2021-03-15  9:08           ` [PATCH v7] " ZheNing Hu via GitGitGadget
2021-03-15 10:00             ` Christian Couder
2021-03-15 10:14             ` Christian Couder
2021-03-15 11:32               ` ZheNing Hu
2021-03-16  5:37                 ` Christian Couder
2021-03-16  8:35                   ` ZheNing Hu
2021-03-15 13:07             ` [PATCH v8 0/2] " ZheNing Hu via GitGitGadget
2021-03-15 13:07               ` [PATCH v8 1/2] " ZheNing Hu via GitGitGadget
2021-03-16 12:52                 ` Ævar Arnfjörð Bjarmason
2021-03-17  2:01                   ` ZheNing Hu
2021-03-17  8:08                     ` Ævar Arnfjörð Bjarmason
2021-03-17 13:54                       ` ZheNing Hu
2021-03-15 13:07               ` [PATCH v8 2/2] interpret_trailers: for three options parse add warning ZheNing Hu via GitGitGadget
2021-03-16  5:53                 ` Christian Couder
2021-03-16  9:11                   ` ZheNing Hu
2021-03-16 10:39               ` [PATCH v9] [GSOC] commit: add --trailer option ZheNing Hu via GitGitGadget
2021-03-17  5:26                 ` Shourya Shukla
2021-03-17  6:06                   ` ZheNing Hu
2021-03-18 11:15                 ` [PATCH v10 0/3] " ZheNing Hu via GitGitGadget
2021-03-18 11:15                   ` [PATCH v10 1/3] " ZheNing Hu via GitGitGadget
2021-03-18 16:29                     ` Đoàn Trần Công Danh
2021-03-19  7:56                       ` ZheNing Hu
2021-03-18 11:15                   ` ZheNing Hu via GitGitGadget [this message]
2021-03-18 16:45                     ` [PATCH v10 2/3] interpret-trailers: add own-identity option Đoàn Trần Công Danh
2021-03-19  8:04                       ` ZheNing Hu
2021-03-18 19:20                     ` Junio C Hamano
2021-03-19  9:33                       ` ZheNing Hu
2021-03-19 15:36                         ` Junio C Hamano
2021-03-20  2:54                           ` ZheNing Hu
2021-03-20  5:06                             ` Jeff King
2021-03-20  5:50                               ` Junio C Hamano
2021-03-20  6:16                                 ` ZheNing Hu
2021-03-20  6:38                                   ` ZheNing Hu
2021-03-20  6:53                                     ` Junio C Hamano
2021-03-20  8:43                                       ` ZheNing Hu
2021-03-18 11:15                   ` [PATCH v10 3/3] commit: " ZheNing Hu via GitGitGadget
2021-03-18 13:47                   ` [PATCH v10 0/3] [GSOC] commit: add --trailer option Christian Couder
2021-03-18 15:27                     ` ZheNing Hu
2021-03-19 12:05                   ` [PATCH v11] " ZheNing Hu via GitGitGadget
2021-03-19 17:48                     ` Junio C Hamano
2021-03-20 13:41                     ` [PATCH v12] " ZheNing Hu via GitGitGadget
2021-03-22  4:24                       ` [PATCH v13] " ZheNing Hu via GitGitGadget
2021-03-22  7:43                         ` Christian Couder
2021-03-22 10:23                           ` ZheNing Hu
2021-03-22 21:34                             ` Christian Couder
2021-03-23  6:11                               ` ZheNing Hu
2021-03-23  6:19                               ` Junio C Hamano
2021-03-23  7:57                                 ` Christian Couder
2021-03-23 17:11                                   ` Junio C Hamano
2021-03-24  5:21                                     ` ZheNing Hu
2021-03-23 10:35                                 ` ZheNing Hu
2021-03-23 12:41                                   ` Christian Couder
2021-03-23 17:12                                   ` Junio C Hamano
2021-03-24  5:25                                     ` ZheNing Hu
2021-03-22 21:55                             ` Christian Couder
2021-03-23  6:29                               ` ZheNing Hu
2021-03-23 13:55                         ` [PATCH v14] " ZheNing Hu via GitGitGadget
2021-03-15  4:38       ` [PATCH v4] " Junio C Hamano
2021-03-15  5:11         ` 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=42590e95deeece6ba65e0432c3a59746e717fee3.1616066156.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=adlternative@gmail.com \
    --cc=bkuhn@sfconservancy.org \
    --cc=christian.couder@gmail.com \
    --cc=drafnel@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=periperidip@gmail.com \
    --cc=rafaeloliveira.cs@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.