All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabian Ruch <bafain@gmail.com>
To: Avi Kivity <avi@cloudius-systems.com>, git@vger.kernel.org
Subject: Re: [PATCH v2] git-am: add option to extract email Message-Id: tag into commit log
Date: Wed, 02 Jul 2014 16:18:12 +0200	[thread overview]
Message-ID: <53B414A4.2060909@gmail.com> (raw)
In-Reply-To: <1404291113-4424-1-git-send-email-avi@cloudius-systems.com>

Hi Avi,

On 07/02/2014 10:51 AM, Avi Kivity wrote:
> Some workflows prefer to track exactly which email message was used to
> generate a commit.  This can be used, for example, to generate an
> automated acknowledgement when a patch is committed as a response to
> the patch email, or as a reference to the thread which introduced the
> patch.
> 
> Support this by adding a --message-id option (abbreviated as -m) to
> git-am, which will then extract the message ID and append it to the
> email commit log.
> 
> Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
> ---
> 
> v2: adjust to pass test suite (t5100)
> 
>  Documentation/git-am.txt |  6 ++++++
>  builtin/mailinfo.c       |  2 +-
>  git-am.sh                | 10 +++++++++-
>  t/t5100/info0004         |  1 +
>  t/t5100/info0005         |  1 +
>  t/t5100/info0012         |  1 +
>  6 files changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
> index 9adce37..8a251a1 100644
> --- a/Documentation/git-am.txt
> +++ b/Documentation/git-am.txt
> @@ -15,6 +15,7 @@ SYNOPSIS
>  	 [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
>  	 [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
>  	 [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
> +	 [--message-id]
>  	 [(<mbox> | <Maildir>)...]
>  'git am' (--continue | --skip | --abort)
>  
> @@ -121,6 +122,11 @@ default.   You can use `--no-utf8` to override this.
>  	user to lie about the author date by using the same
>  	value as the committer date.
>  
> +-m::
> +--message-id::
> +	Extract the Message-Id: header from the e-mail and
> +	append it to the commit message's tag stanza.
> +
>  --skip::
>  	Skip the current patch.  This is only meaningful when
>  	restarting an aborted patch.
> diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c
> index cf11c8d..f1e1fed 100644
> --- a/builtin/mailinfo.c
> +++ b/builtin/mailinfo.c
> @@ -278,7 +278,7 @@ static void cleanup_space(struct strbuf *sb)
>  
>  static void decode_header(struct strbuf *line);
>  static const char *header[MAX_HDR_PARSED] = {
> -	"From","Subject","Date",
> +	"From","Subject","Date","Message-Id"
>  };
>  
>  static inline int cmp_header(const struct strbuf *line, const char *hdr)
> diff --git a/git-am.sh b/git-am.sh
> index ee61a77..c0e7bdd 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -39,6 +39,7 @@ committer-date-is-author-date    lie about committer date
>  ignore-date     use current timestamp for author date
>  rerere-autoupdate update the index with reused conflict resolution if possible
>  S,gpg-sign?     GPG-sign commits
> +m,message-id    copy the Message-Id: header to the commit's tag stanza
>  rebasing*       (internal use for git-rebase)"
>  
>  . git-sh-setup
> @@ -371,7 +372,7 @@ split_patches () {
>  prec=4
>  dotest="$GIT_DIR/rebase-apply"
>  sign= utf8=t keep= keepcr= skip= interactive= resolved= rebasing= abort=
> -resolvemsg= resume= scissors= no_inbody_headers=
> +resolvemsg= resume= scissors= no_inbody_headers= message_id=
>  git_apply_opt=
>  committer_date_is_author_date=
>  ignore_date=
> @@ -442,6 +443,8 @@ it will be removed. Please do not use it anymore."
>  		gpg_sign_opt=-S ;;
>  	--gpg-sign=*)
>  		gpg_sign_opt="-S${1#--gpg-sign=}" ;;
> +	-m|--message-id)
> +		message_id=t ;;

Doesn't the message-id line in OPTIONS_SPEC make the negated long
option --no-message-id available as well? If that's the case, then
the corresponding case arm is missing from here.

>  	--)
>  		shift; break ;;
>  	*)
> @@ -565,6 +568,7 @@ Use \"git am --abort\" to remove it.")"
>  	echo " $git_apply_opt" >"$dotest/apply-opt"
>  	echo "$threeway" >"$dotest/threeway"
>  	echo "$sign" >"$dotest/sign"
> +	echo "$message_id" > "$dotest/message-id"

To match the local style conventions, the space character after the
redirection operator should be removed.

Also, isn't the patch missing the bits where the state of message-id
is read? Like so:

    if test "$(cat "$dotest/message-id")" = t
    then
    	message_id=t
    fi

>  	echo "$utf8" >"$dotest/utf8"
>  	echo "$keep" >"$dotest/keep"
>  	echo "$scissors" >"$dotest/scissors"
> @@ -757,6 +761,10 @@ To restore the original branch and stop patching run \"\$cmdline --abort\"."
>  		then
>  			cat "$dotest/msg-clean"
>  		fi
> +		if test 't' == "$message_id"
> +		then
> +			grep ^Message-Id: "$dotest/info" || true

Why is the true guard needed here? The exit status of grep seems to
never be checked.

Although I cannot come up with an example where this would matter,
you might want to consider using the grep wrapper sane_grep from
git-sh-setup.sh instead. It resets the environment variable
GREP_OPTIONS before calling grep so that no unexpected user options
come into play.

> +		fi
>  		if test '' != "$ADD_SIGNOFF"
>  		then
>  			echo "$ADD_SIGNOFF"
> 
> [..]

   Fabian

  parent reply	other threads:[~2014-07-02 14:18 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-02  8:51 [PATCH v2] git-am: add option to extract email Message-Id: tag into commit log Avi Kivity
2014-07-02  9:58 ` Torsten Bögershausen
2014-07-02 13:54   ` Avi Kivity
2014-07-02 14:18 ` Fabian Ruch [this message]
2014-07-02 14:44   ` Avi Kivity
2014-07-02 17:17 ` Junio C Hamano
2014-07-03 14:08   ` Avi Kivity

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=53B414A4.2060909@gmail.com \
    --to=bafain@gmail.com \
    --cc=avi@cloudius-systems.com \
    --cc=git@vger.kernel.org \
    /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.