git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] tag: add --edit option

From
Ramsay Jones <ramsay@ramsayjones.plus.com>
Date
Feb 1, 2018, 15:25 UTC
Message-ID
<0157dde9-4450-6528-31a5-2a3f95e2afec@ramsayjones.plus.com>
In-Reply-To
<450140f4-d410-4f1a-e5c1-c56d345a7f7c@suse.com>
On 01/02/18 09:49, Nicolas Morey-Chaisemartin wrote:
Show 73 quoted lines
> Add a --edit option whichs allows modifying the messages provided by -m or -F,
> the same way git commit --edit does.
> 
> Signed-off-by: Nicolas Morey-Chaisemartin <NMoreyChaisemartin@suse.com>
> ---
>  Documentation/git-tag.txt |  6 ++++++
>  builtin/tag.c             | 11 +++++++++--
>  t/t7004-tag.sh            | 34 ++++++++++++++++++++++++++++++++++
>  3 files changed, 49 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
> index 956fc019f984..b9e5a993bea0 100644
> --- a/Documentation/git-tag.txt
> +++ b/Documentation/git-tag.txt
> @@ -167,6 +167,12 @@ This option is only applicable when listing tags without annotation lines.
>  	Implies `-a` if none of `-a`, `-s`, or `-u <keyid>`
>  	is given.
>  
> +-e::
> +--edit::
> +	The message taken from file with `-F` and command line with
> +	`-m` are usually used as the tag message unmodified.
> +	This option lets you further edit the message taken from these sources.
> +
>  --cleanup=<mode>::
>  	This option sets how the tag message is cleaned up.
>  	The  '<mode>' can be one of 'verbatim', 'whitespace' and 'strip'.  The
> diff --git a/builtin/tag.c b/builtin/tag.c
> index a7e6a5b0f234..91c60829d5f9 100644
> --- a/builtin/tag.c
> +++ b/builtin/tag.c
> @@ -194,6 +194,7 @@ static int build_tag_object(struct strbuf *buf, int sign, struct object_id *resu
>  
>  struct create_tag_options {
>  	unsigned int message_given:1;
> +	unsigned int use_editor:1;
>  	unsigned int sign;
>  	enum {
>  		CLEANUP_NONE,
> @@ -224,7 +225,7 @@ static void create_tag(const struct object_id *object, const char *tag,
>  		    tag,
>  		    git_committer_info(IDENT_STRICT));
>  
> -	if (!opt->message_given) {
> +	if (!opt->message_given || opt->use_editor) {
>  		int fd;
>  
>  		/* write the template message before editing: */
> @@ -233,7 +234,10 @@ static void create_tag(const struct object_id *object, const char *tag,
>  		if (fd < 0)
>  			die_errno(_("could not create file '%s'"), path);
>  
> -		if (!is_null_oid(prev)) {
> +		if (opt->message_given) {
> +			write_or_die(fd, buf->buf, buf->len);
> +			strbuf_reset(buf);
> +		} else if (!is_null_oid(prev)) {
>  			write_tag_body(fd, prev);
>  		} else {
>  			struct strbuf buf = STRBUF_INIT;
> @@ -372,6 +376,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
>  	static struct ref_sorting *sorting = NULL, **sorting_tail = &sorting;
>  	struct ref_format format = REF_FORMAT_INIT;
>  	int icase = 0;
> +	int edit_flag = 0;
>  	struct option options[] = {
>  		OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'),
>  		{ OPTION_INTEGER, 'n', NULL, &filter.lines, N_("n"),
> @@ -386,6 +391,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
>  		OPT_CALLBACK('m', "message", &msg, N_("message"),
>  			     N_("tag message"), parse_msg_arg),
>  		OPT_FILENAME('F', "file", &msgfile, N_("read message from file")),
> +		OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
s/commit/tag message/ ?

ATB, Ramsay Jones

Previous: Nicolas Morey-Chaisemartin
Message 7 of 7 in “tag: add --edit option”
  1. tag: add --edit optionNicolas Morey-Chaisemartin, Feb 1, 2018
  2. Eric SunshineFeb 1, 2018
  3. Nicolas Morey-ChaisemartinFeb 1, 2018
  4. Nicolas Morey-ChaisemartinFeb 1, 2018
  5. Eric SunshineFeb 1, 2018
  6. Nicolas Morey-ChaisemartinFeb 1, 2018
  7. Ramsay JonesFeb 1, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.