Re: [PATCH v2] git-am: add option to extract email Message-Id: tag into commit log

2014-07-03 Thread Avi Kivity


On 07/02/2014 08:17 PM, Junio C Hamano wrote:

Avi Kivity a...@cloudius-systems.com writes:


+   if test 't' == $message_id
+   then
+   grep ^Message-Id: $dotest/info || true
+   fi
if test '' != $ADD_SIGNOFF
then
echo $ADD_SIGNOFF

Seeing how existing code carefully makes sure that ADD_SIGNOFF has
an empty line before it when and only when necessary to ensure that
there is a blank after the existing log message, I would suspect
that this patch that blindly inserts a line is doubly wrong.  The
output from grep may be appended without adding a blank when
necessary, and appending of ADD_SIGNOFF may end up adding an extra
blank after Message-Id.  Am I reading the patch wrong?


Yes, you're right.  Will have to redo the logic for deciding whether we 
already have a tag stanza or not.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity
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 a...@cloudius-systems.com
---
 Documentation/git-am.txt |  6 ++
 builtin/mailinfo.c   |  2 +-
 git-am.sh| 10 +-
 3 files changed, 16 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] [-Cn] [-pn] [--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..22799ff 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -39,6 +39,7 @@ committer-date-is-author-datelie 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-idcopy 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 ;;
--)
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
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
+   fi
if test '' != $ADD_SIGNOFF
then
echo $ADD_SIGNOFF
-- 
1.9.3

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity
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 a...@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] [-Cn] [-pn] [--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-datelie 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-idcopy 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 ;;
--)
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
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
+   fi
if test '' != $ADD_SIGNOFF
then
echo $ADD_SIGNOFF
diff --git a/t/t5100/info0004 b/t/t5100/info0004
index 616c309..f7e2983 100644
--- a/t/t5100/info0004
+++ b/t/t5100/info0004
@@ -2,4 +2,5 @@ Author: YOSHIFUJI Hideaki / 吉藤英明
 Email: yoshf...@linux-ipv6.org
 Subject: GIT: Try all addresses for given remote name
 Date: Thu, 21 Jul 2005 09:10:36 -0400 (EDT)
+Message-Id: 20050721.091036.01119516.yoshf...@linux-ipv6.org
 
diff --git a/t/t5100/info0005 b/t/t5100/info0005
index 46a46fc..592388f 100644
--- a/t/t5100/info0005
+++ b/t/t5100/info0005
@@ -2,4 +2,5 @@ Author: David Kågedal
 Email: dav...@lysator.liu.se
 Subject: Fixed two bugs in git-cvsimport-script.
 Date: Mon, 15 Aug 2005 20:18:25 +0200
+Message-Id: u5tacjjdpxq@lysator.liu.se
 
diff --git a/t/t5100/info0012 b/t/t5100/info0012
index ac1216f..b5d89a1 100644
--- a/t/t5100/info0012
+++ b/t/t5100/info0012
@@ -2,4 +2,5 @@ Author: Dmitriy Blinov
 Email: b...@mnsspb.ru
 Subject: Изменён список пакетов необходимых для сборки
 Date: Wed, 12 Nov 2008 17:54:41 +0300
+Message-Id: 1226501681-24923-1

[PATCH v3] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity
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 a...@cloudius-systems.com
---

v3: remove bashism and unneeded quoting

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] [-Cn] [-pn] [--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..9fae315 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -39,6 +39,7 @@ committer-date-is-author-datelie 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-idcopy 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 ;;
--)
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
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
+   fi
if test '' != $ADD_SIGNOFF
then
echo $ADD_SIGNOFF
diff --git a/t/t5100/info0004 b/t/t5100/info0004
index 616c309..f7e2983 100644
--- a/t/t5100/info0004
+++ b/t/t5100/info0004
@@ -2,4 +2,5 @@ Author: YOSHIFUJI Hideaki / 吉藤英明
 Email: yoshf...@linux-ipv6.org
 Subject: GIT: Try all addresses for given remote name
 Date: Thu, 21 Jul 2005 09:10:36 -0400 (EDT)
+Message-Id: 20050721.091036.01119516.yoshf...@linux-ipv6.org
 
diff --git a/t/t5100/info0005 b/t/t5100/info0005
index 46a46fc..592388f 100644
--- a/t/t5100/info0005
+++ b/t/t5100/info0005
@@ -2,4 +2,5 @@ Author: David Kågedal
 Email: dav...@lysator.liu.se
 Subject: Fixed two bugs in git-cvsimport-script.
 Date: Mon, 15 Aug 2005 20:18:25 +0200
+Message-Id: u5tacjjdpxq@lysator.liu.se
 
diff --git a/t/t5100/info0012 b/t/t5100/info0012
index ac1216f..b5d89a1 100644
--- a/t/t5100/info0012
+++ b/t/t5100/info0012
@@ -2,4 +2,5 @@ Author: Dmitriy Blinov
 Email: b...@mnsspb.ru
 Subject: Изменён список пакетов необходимых для сборки
 Date: Wed, 12 Nov 2008 17:54:41

Re: [PATCH v2] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity


On 07/02/2014 12:58 PM, Torsten Bögershausen wrote:

@@ -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

The == is bash special, please use = instead
And the 't' can be written as t, so that the whole line looks like this:
if test t = $message_id



Thanks.  v3 posted with these changes.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity


On 07/02/2014 05:18 PM, Fabian Ruch wrote:

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 a...@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] [-Cn] [-pn] [--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-datelie 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-idcopy 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.


I don't know, but some other booleans don't supply negations, for 
example --reject.



--)
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.


Sure.


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


Good catch, I guess this fixes a restarted am.




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.


I usually code scripts with -e, but here it's unneeded.



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

[PATCH v4] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity
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 a...@cloudius-systems.com
---

v4: adjust coding style
recover message_id variable after a resumed git-am
use sane_grep
drop unneeded grep error handling

v3: remove bashism and unneeded quoting

v2: adjust to pass test suite (t5100)

 Documentation/git-am.txt |  6 ++
 builtin/mailinfo.c   |  2 +-
 git-am.sh| 14 +-
 t/t5100/info0004 |  1 +
 t/t5100/info0005 |  1 +
 t/t5100/info0012 |  1 +
 6 files changed, 23 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] [-Cn] [-pn] [--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..fd0181f 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -39,6 +39,7 @@ committer-date-is-author-datelie 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-idcopy 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 ;;
--)
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
echo $utf8 $dotest/utf8
echo $keep $dotest/keep
echo $scissors $dotest/scissors
@@ -651,6 +655,10 @@ then
 else
SIGNOFF=
 fi
+if test $(cat $dotest/message-id) = t
+then
+   message_id=t
+fi
 
 last=$(cat $dotest/last)
 this=$(cat $dotest/next)
@@ -757,6 +765,10 @@ To restore the original branch and stop patching run 
\\$cmdline --abort\.
then
cat $dotest/msg-clean
fi
+   if test t = $message_id
+   then
+   sane_grep ^Message-Id: $dotest/info
+   fi
if test '' != $ADD_SIGNOFF
then
echo $ADD_SIGNOFF
diff --git a/t/t5100/info0004 b/t/t5100/info0004
index 616c309..f7e2983 100644
--- a/t/t5100/info0004
+++ b/t/t5100/info0004
@@ -2,4 +2,5 @@ Author: YOSHIFUJI Hideaki / 吉藤英明
 Email: yoshf...@linux-ipv6.org
 Subject: GIT: Try all addresses for given remote name
 Date: Thu, 21 Jul 2005 09:10:36 -0400 (EDT)
+Message-Id: 20050721.091036.01119516.yoshf...@linux-ipv6.org
 
diff --git a/t/t5100/info0005 b/t/t5100/info0005
index 46a46fc..592388f 100644
--- a/t/t5100/info0005
+++ b/t/t5100/info0005
@@ -2,4 +2,5 @@ Author: David Kågedal
 Email: dav...@lysator.liu.se
 Subject: Fixed two bugs in git-cvsimport-script.
 Date: Mon, 15 Aug 2005 20:18:25 +0200
+Message

Re: [PATCH v4] git-am: add option to extract email Message-Id: tag into commit log

2014-07-02 Thread Avi Kivity


On 07/02/2014 06:03 PM, Torsten Bögershausen wrote:

@@ -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
echo $utf8 $dotest/utf8
echo $keep $dotest/keep
echo $scissors $dotest/scissors
@@ -651,6 +655,10 @@ then
  else
SIGNOFF=
  fi
+if test $(cat $dotest/message-id) = t

Does the usage of '' inside of '' look good, or can we write like this:
if test $(cat $dotest/message-id) = t


With your change, it will fail if the file is missing or empty.

Complex shell scripts cannot be made to look good.  If that's a 
requirement then the script should be rewritten in a reasonable language.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html