{"thread":{"id":"3006","subject":"[PATCH] format-patch: Use --mbox by default.","startedAt":"2006-01-08T14:01:25Z","lastAt":"2006-01-13T23:56:44Z","messageCount":6,"participants":["Andreas Ericsson","Junio C Hamano","H. Peter Anvin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"14305","messageId":"20060108140109.909925BE8D@nox.op5.se","threadId":"3006","inReplyTo":null,"subject":"[PATCH] format-patch: Use --mbox by default.","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2006-01-08T14:01:25Z","receivedAt":"2006-01-08T14:01:25Z","isPatch":true,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"This patch enables a slightly modified and more correct --mbox\noutput by default. The --date, --author and --mbox options\nare obsoleted and removed.\n\nPreviously, author-info and date was by default only printed if the\ncommit was made by someone else, irrespective of the obsoleted options.\nSince it does no harm having ones own info there too it shouldn't really\nmatter much, and should lessen the confusion regarding how to use\ngit-format-patch with git-am.\n\nThe patches generated also had bad mail headers for sendmail (of\npostfix 2.2.2 at least) to use directly (From: line must be on top,\nSubject: last of header), which isn't really an issue but annoying\njust the same. I haven't actually tried this new format, but at least\n'file' now recognize it as \"news or mail text\", rather than \"ASCII\nEnglish text\".\n\nNote that this reverts commit aa66c7ec77d474b737da607d6cb2d07f56628def,\n\"format-patch/commit: Quote single quote in the author name properly\"\nwhich is no longer needed since the whosepatchScript now prints\nthe headers directly rather than passing them to eval.\n\nThese changes allow us to remove two conditional statements\nand the invokation of a sub-shell in the process_one function,\nso it should be a bit faster too.\n\nSigned-off-by: Andreas Ericsson <ae@op5.se>\n\n---\n\n Documentation/git-format-patch.txt |   18 ++-----------\n git-format-patch.sh                |   49 +++++++-----------------------------\n 2 files changed, 12 insertions(+), 55 deletions(-)\n\nb38d1ffeb27ba32de849f33a9c416fda4cd8eecb\ndiff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt\nindex 47705de..73e1358 100644\n--- a/Documentation/git-format-patch.txt\n+++ b/Documentation/git-format-patch.txt\n@@ -9,7 +9,7 @@ git-format-patch - Prepare patches for e\n SYNOPSIS\n --------\n [verse]\n-'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c] [--mbox]\n+'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c]\n \t\t [--diff-options] <his> [<mine>]\n \n DESCRIPTION\n@@ -27,9 +27,8 @@ When -n is specified, instead of \"[PATCH\n line is formatted as \"[PATCH N/M] Subject\", unless you have only\n one patch.\n \n-When --mbox is specified, the output is formatted to resemble\n-UNIX mailbox format, and can be concatenated together for\n-processing with applymbox.\n+The output is formatted to resemble UNIX mailbox format, and can\n+be concatenated together for processing with gitlink::git-am[1].\n \n \n OPTIONS\n@@ -45,11 +44,6 @@ OPTIONS\n \tDo not strip/add '[PATCH]' from the first line of the\n \tcommit log message.\n \n--a|--author, -d|--date::\n-\tOutput From: and Date: headers for commits made by\n-\tyourself as well.  Usually these are output only for\n-\tcommits made by people other than yourself.\n-\n -s|--signoff::\n \tAdd `Signed-off-by:` line to the commit message, using\n \tthe committer identity of yourself.\n@@ -61,12 +55,6 @@ OPTIONS\n         has a SP character immediately followed by a TAB\n         character.\n \n--m|--mbox::\n-\tFormat the output files for closer to mbox format by\n-\tadding a phony Unix \"From \" line, so they can be\n-\tconcatenated together and fed to `git-applymbox`.\n-\tImplies --author and --date.\n-\n --stdout::\n \tThis flag generates the mbox formatted output to the\n \tstandard output, instead of saving them into a file per\ndiff --git a/git-format-patch.sh b/git-format-patch.sh\nindex 818059f..047246e 100755\n--- a/git-format-patch.sh\n+++ b/git-format-patch.sh\n@@ -3,7 +3,7 @@\n # Copyright (c) 2005 Junio C Hamano\n #\n \n-USAGE='[-n | -k] [-o <dir> | --stdout] [--signoff] [--check] [--mbox] [--diff-options] <upstream> [<our-head>]'\n+USAGE='[-n | -k] [-o <dir> | --stdout] [--signoff] [--check] [--diff-options] <upstream> [<our-head>]'\n LONG_USAGE='Prepare each commit with its patch since our-head forked from upstream,\n one file per patch, for e-mail submission.  Each output file is\n numbered sequentially from 1, and uses the first line of the commit\n@@ -15,9 +15,8 @@ the current working directory.\n When -n is specified, instead of \"[PATCH] Subject\", the first line is formatted\n as \"[PATCH N/M] Subject\", unless you have only one patch.\n \n-When --mbox is specified, the output is formatted to resemble\n-UNIX mailbox format, and can be concatenated together for processing\n-with applymbox.'\n+The output is formatted to resemble UNIX mailbox format, and can be\n+concatenated together for processing with \"git am\".'\n . git-sh-setup\n \n # Force diff to run in C locale.\n@@ -32,14 +31,8 @@ outdir=./\n while case \"$#\" in 0) break;; esac\n do\n     case \"$1\" in\n-    -a|--a|--au|--aut|--auth|--autho|--author)\n-    author=t ;;\n     -c|--c|--ch|--che|--chec|--check)\n     check=t ;;\n-    -d|--d|--da|--dat|--date)\n-    date=t ;;\n-    -m|--m|--mb|--mbo|--mbox)\n-    date=t author=t mbox=t ;;\n     -k|--k|--ke|--kee|--keep|--keep-|--keep-s|--keep-su|--keep-sub|\\\n     --keep-subj|--keep-subje|--keep-subjec|--keep-subject)\n     keep_subject=t ;;\n@@ -48,7 +41,7 @@ do\n     -s|--s|--si|--sig|--sign|--signo|--signof|--signoff)\n     signoff=t ;;\n     --st|--std|--stdo|--stdou|--stdout)\n-    stdout=t mbox=t date=t author=t ;;\n+    stdout=t ;;\n     -o=*|--o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*|--output-=*|\\\n     --output-d=*|--output-di=*|--output-dir=*|--output-dire=*|\\\n     --output-direc=*|--output-direct=*|--output-directo=*|\\\n@@ -173,12 +166,12 @@ titleScript='\n \n whosepatchScript='\n /^author /{\n-\ts/'\\''/'\\''\\\\'\\'\\''/g\n-\ts/author \\(.*>\\) \\(.*\\)$/au='\\''\\1'\\'' ad='\\''\\2'\\''/p\n+\ts/^author \\([^>]*>\\)[\\t ]*\\(.*\\)$/From: \\1\\nDate: \\2/p\n \tq\n }'\n \n process_one () {\n+\tsed -ne \"$whosepatchScript\" $commsg\n \tmailScript='\n \t/./d\n \t/^$/n'\n@@ -191,26 +184,7 @@ process_one () {\n \t    ;;\n \tesac\n \tmailScript=\"$mailScript\"'\n-\ts|^|Subject: |'\n-\tcase \"$mbox\" in\n-\tt)\n-\t    echo 'From nobody Mon Sep 17 00:00:00 2001' ;# UNIX \"From\" line\n-\t    ;;\n-\tesac\n-\n-\teval \"$(sed -ne \"$whosepatchScript\" $commsg)\"\n-\ttest \"$author,$au\" = \",$me\" || {\n-\t\tmailScript=\"$mailScript\"'\n-\ta\\\n-From: '\"$au\"\n-\t}\n-\ttest \"$date,$au\" = \",$me\" || {\n-\t\tmailScript=\"$mailScript\"'\n-\ta\\\n-Date: '\"$ad\"\n-\t}\n-\n-\tmailScript=\"$mailScript\"'\n+\ts|^|Subject: |\n \ta\\\n \n \t: body\n@@ -218,7 +192,7 @@ Date: '\"$ad\"\n \tn\n \tb body'\n \n-\t(cat $commsg ; echo; echo) |\n+\t(cat $commsg; echo; echo) |\n \tsed -ne \"$mailScript\" |\n \tgit-stripspace\n \n@@ -239,12 +213,7 @@ Date: '\"$ad\"\n \tgit-diff-tree -p $diff_opts \"$commit\"\n \techo \"-- \"\n \techo \"@@GIT_VERSION@@\"\n-\n-\tcase \"$mbox\" in\n-\tt)\n-\t\techo\n-\t\t;;\n-\tesac\n+\techo\n }\n \n total=`wc -l <$series | tr -dc \"[0-9]\"`\n-- \n1.0.7-gb38d1\n"},{"id":"14319","messageId":"7vhd8ezcol.fsf@assigned-by-dhcp.cox.net","threadId":"3006","inReplyTo":"20060108140109.909925BE8D@nox.op5.se","subject":"Re: [PATCH] format-patch: Use --mbox by default.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-01-08T20:28:58Z","receivedAt":"2006-01-08T20:28:58Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Andreas Ericsson <ae@op5.se> writes:\n\n> This patch enables a slightly modified and more correct --mbox\n> output by default. The --date, --author and --mbox options\n> are obsoleted and removed.\n\nI always use format-patch with -k -m (or -k --stdout), so I have\nno objections to making --mbox the default.  I do not think\nanybody uses --date or --author in their scripts, but removing\nthe --mbox option _might_ break things for people's scripts.\nMaybe it is worthwhile to keep it as a no-op option for a while.\n\n> Previously, author-info and date was by default only printed if the\n> commit was made by someone else, irrespective of the obsoleted options.\n> Since it does no harm having ones own info there too it shouldn't really\n> matter much, and should lessen the confusion regarding how to use\n> git-format-patch with git-am.\n\nTrue.  Originally it was really \"format my changes to\nsubmission\" tool (--signoff option is a sure sign to tell you\nthat) and propagating authorship info was added as afterthought.\n\n> The patches generated also had bad mail headers for sendmail (of\n> postfix 2.2.2 at least) to use directly (From: line must be on top,\n> Subject: last of header),...\n\nI do not think RFC2822 specifies that.  See \"3.6 Field\ndefinitions\", third paragraph, first two sentences.\n\nIn that sense, technically they are not \"bad mail headers\", but\nat the same time, since it is valid in any order, if _one_\npopular MTA is unconfortable with a particular ordering, we\ncould order things differently to make it happier (mind you,\nthis would not work for more than one such broken MTAs).\n\nAnother thing I've been considering is to handle UTF-8 (or\ni18n.commitencoding in general) a bit better.  We currently do\nnot have Content-Type: header, so if you pipe the output to\n\"am\", it must be invoked without \"-u\" to make sure that it takes\nthings as-is (\"am -u\" assumes things are in latin1 without\nContent-Type:).  If we start to tackle that issue, we might also\nwant to do RFC2047 in headers.\n"},{"id":"14324","messageId":"43C18EE1.4050807@zytor.com","threadId":"3006","inReplyTo":"20060108140109.909925BE8D@nox.op5.se","subject":"Re: [PATCH] format-patch: Use --mbox by default.","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2006-01-08T22:14:57Z","receivedAt":"2006-01-08T22:14:57Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"Andreas Ericsson wrote:\n> \n> The patches generated also had bad mail headers for sendmail (of\n> postfix 2.2.2 at least) to use directly (From: line must be on top,\n> Subject: last of header)\n\nSounds like a bug report against postfix is in order.\n\n\t-hpa\n"},{"id":"14333","messageId":"43C1C3FA.8070609@op5.se","threadId":"3006","inReplyTo":"7vhd8ezcol.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] format-patch: Use --mbox by default.","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2006-01-09T02:01:30Z","receivedAt":"2006-01-09T02:01:30Z","isPatch":true,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Junio C Hamano wrote:\n> Andreas Ericsson <ae@op5.se> writes:\n> \n> \n>>This patch enables a slightly modified and more correct --mbox\n>>output by default. The --date, --author and --mbox options\n>>are obsoleted and removed.\n> \n> \n> I always use format-patch with -k -m (or -k --stdout), so I have\n> no objections to making --mbox the default.  I do not think\n> anybody uses --date or --author in their scripts, but removing\n> the --mbox option _might_ break things for people's scripts.\n> Maybe it is worthwhile to keep it as a no-op option for a while.\n> \n\nThe reworked patch (which works for sending patches to myself, so far), \nprints a warning to stderr that a deprecated option is used and then \nsilently ignores it.\n\n> \n>>The patches generated also had bad mail headers for sendmail (of\n>>postfix 2.2.2 at least) to use directly (From: line must be on top,\n>>Subject: last of header),...\n> \n> \n> I do not think RFC2822 specifies that.  See \"3.6 Field\n> definitions\", third paragraph, first two sentences.\n> \n> In that sense, technically they are not \"bad mail headers\", but\n> at the same time, since it is valid in any order, if _one_\n> popular MTA is unconfortable with a particular ordering, we\n> could order things differently to make it happier (mind you,\n> this would not work for more than one such broken MTAs).\n> \n\n\nThe only thing I've seen break is if Subject: is placed on top. It's \neasier, script-wise, to put it last and that seems to work with qmail \nand postfix both.\n\n\n> Another thing I've been considering is to handle UTF-8 (or\n> i18n.commitencoding in general) a bit better.  We currently do\n> not have Content-Type: header, so if you pipe the output to\n> \"am\", it must be invoked without \"-u\" to make sure that it takes\n> things as-is (\"am -u\" assumes things are in latin1 without\n> Content-Type:).  If we start to tackle that issue, we might also\n> want to do RFC2047 in headers.\n> \n> \n\nYou'll have to ask someone else for that. I have no idea how it works \nand I wouldn't know how to begin doing it in shell.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"14334","messageId":"43C1C4D7.7060107@op5.se","threadId":"3006","inReplyTo":"43C18EE1.4050807@zytor.com","subject":"Re: [PATCH] format-patch: Use --mbox by default.","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2006-01-09T02:05:11Z","receivedAt":"2006-01-09T02:05:11Z","isPatch":true,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"H. Peter Anvin wrote:\n> Andreas Ericsson wrote:\n> \n>>\n>> The patches generated also had bad mail headers for sendmail (of\n>> postfix 2.2.2 at least) to use directly (From: line must be on top,\n>> Subject: last of header)\n> \n> \n> Sounds like a bug report against postfix is in order.\n> \n\nNo need. It works with 2.2.8. The 2.2.2 it failed with is the default \nfor FC4. I have no interest investigating all the possibilities, and I \ndoubt Vietse will look for bugs in old versions unless they're security \nrelated.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"14643","messageId":"7v1wzb1y2r.fsf@assigned-by-dhcp.cox.net","threadId":"3006","inReplyTo":"20060108140109.909925BE8D@nox.op5.se","subject":"[PATCH] format-patch: always --mbox and show sane Date:","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-01-13T23:56:44Z","receivedAt":"2006-01-13T23:56:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Make --mbox, --author, and --date options a no-op, and always\nuse --mbox output, and rewrite the commit log formatting in\nPerl.  This makes it easier to output Date: header in RFC 2822\nformat, so do that as well.\n\nInspiration for this patch came from Andreas Ericsson's earlier\npatch.\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n\n---\n\n * I admit that trying to avoid Perl and sticking to multiple\n   sed invocations in this script was a lost battle.  This patch\n   is still minimalistic and it does not go all the way to\n   rewrite the main loop of the program, which probably should\n   happen someday.\n\n   I would not mind if someday somebody rewrote most of the\n   barebone Porcelainish in Python or Perl, but the rewrite\n   should not be for the sake of using that language.  It should\n   have other justifications: \"there is too much text processing\n   there it would not make sense to do that in shell\".  I think\n   this patch is borderline to qualify to be in that camp.\n\n   As the version string at the end shows, this was prepared\n   with the script source itself before building, as a test\n   case.\n\n git-format-patch.sh |  143 +++++++++++++++++++++++++++------------------------\n 1 files changed, 75 insertions(+), 68 deletions(-)\n\n8b4271ef24818e6d52926bc615e5ce78ba0ed01b\ndiff --git a/git-format-patch.sh b/git-format-patch.sh\nindex d3979d7..7e67c4e 100755\n--- a/git-format-patch.sh\n+++ b/git-format-patch.sh\n@@ -34,14 +34,12 @@ outdir=./\n while case \"$#\" in 0) break;; esac\n do\n     case \"$1\" in\n-    -a|--a|--au|--aut|--auth|--autho|--author)\n-    author=t ;;\n     -c|--c|--ch|--che|--chec|--check)\n     check=t ;;\n-    -d|--d|--da|--dat|--date)\n-    date=t ;;\n-    -m|--m|--mb|--mbo|--mbox)\n-    date=t author=t mbox=t ;;\n+    -a|--a|--au|--aut|--auth|--autho|--author|\\\n+    -d|--d|--da|--dat|--date|\\\n+    -m|--m|--mb|--mbo|--mbox) # now noop\n+    ;;\n     -k|--k|--ke|--kee|--keep|--keep-|--keep-s|--keep-su|--keep-sub|\\\n     --keep-subj|--keep-subje|--keep-subjec|--keep-subject)\n     keep_subject=t ;;\n@@ -173,80 +171,89 @@ titleScript='\n \tq\n '\n \n-whosepatchScript='\n-/^author /{\n-\ts/'\\''/'\\''\\\\'\\'\\''/g\n-\ts/author \\(.*>\\) \\(.*\\)$/au='\\''\\1'\\'' ad='\\''\\2'\\''/p\n-\tq\n-}'\n-\n process_one () {\n-\tmailScript='\n-\t/./d\n-\t/^$/n'\n-\tcase \"$keep_subject\" in\n-\tt)  ;;\n-\t*)\n-\t    mailScript=\"$mailScript\"'\n-\t    s|^\\[PATCH[^]]*\\] *||\n-\t    s|^|[PATCH'\"$num\"'] |'\n-\t    ;;\n-\tesac\n-\tmailScript=\"$mailScript\"'\n-\ts|^|Subject: |'\n-\tcase \"$mbox\" in\n-\tt)\n-\t    echo 'From nobody Mon Sep 17 00:00:00 2001' ;# UNIX \"From\" line\n-\t    ;;\n-\tesac\n+\tperl -w -e '\n+my ($keep_subject, $num, $signoff, $commsg) = @ARGV;\n+my ($signoff_pattern, $done_header, $done_subject, $signoff_seen,\n+    $last_was_signoff);\n+\n+if ($signoff) {\n+\t$signoff = `git-var GIT_COMMITTER_IDENT`;\n+\t$signoff =~ s/>.*/>/;\n+\t$signoff_pattern = quotemeta($signoff);\n+}\n \n-\teval \"$(sed -ne \"$whosepatchScript\" $commsg)\"\n-\ttest \"$author,$au\" = \",$me\" || {\n-\t\tmailScript=\"$mailScript\"'\n-\ta\\\n-From: '\"$au\"\n-\t}\n-\ttest \"$date,$au\" = \",$me\" || {\n-\t\tmailScript=\"$mailScript\"'\n-\ta\\\n-Date: '\"$ad\"\n-\t}\n+my @weekday_names = qw(Sun Mon Tue Wed Thu Fri Sat);\n+my @month_names = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);\n \n-\tmailScript=\"$mailScript\"'\n-\ta\\\n+sub show_date {\n+    my ($time, $tz) = @_;\n+    my $minutes = abs($tz);\n+    $minutes = ($minutes / 100) * 60 + ($minutes % 100);\n+    if ($tz < 0) {\n+        $minutes = -$minutes;\n+    }\n+    my $t = $time + $minutes * 60;\n+    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime($t);\n+    return sprintf(\"%s %s %d %02d:%02d:%02d %d %+05d\",\n+\t\t   $weekday_names[$wday],\n+\t\t   $month_names[$mon],\n+\t\t   $mday, $hour, $min, $sec,\n+\t\t   $year+1900, $tz);\n+}\n \n-\t: body\n-\tp\n-\tn\n-\tb body'\n+print \"From nobody Mon Sep 17 00:00:00 2001\\n\";\n+open FH, \"git stripspace <$commsg |\" or die \"open $commsg pipe\";\n+while (<FH>) {\n+    unless ($done_header) {\n+\tif (/^$/) {\n+\t    $done_header = 1;\n+\t}\n+\telsif (/^author (.*>) (.*)$/) {\n+\t    my ($author_ident, $author_date) = ($1, $2);\n+\t    my ($utc, $off) = ($author_date =~ /^(\\d+) ([-+]?\\d+)$/);\n+\t    $author_date = show_date($utc, $off);\n \n-\t(cat $commsg ; echo; echo) |\n-\tsed -ne \"$mailScript\" |\n-\tgit-stripspace\n-\n-\ttest \"$signoff\" = \"t\" && {\n-\t\toffsigner=`git-var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/'`\n-\t\tline=\"Signed-off-by: $offsigner\"\n-\t\tgrep -q \"^$line\\$\" $commsg || {\n-\t\t\techo\n-\t\t\techo \"$line\"\n-\t\t\techo\n-\t\t}\n+\t    print \"From: $author_ident\\n\";\n+\t    print \"Date: $author_date\\n\";\n \t}\n-\techo\n-\techo '---'\n-\techo\n+\tnext;\n+    }\n+    unless ($done_subject) {\n+\tunless ($keep_subject) {\n+\t    s/^\\[PATCH[^]]*\\]\\s*//;\n+\t    s/^/[PATCH$num] /;\n+\t}\n+        print \"Subject: $_\";\n+\t$done_subject = 1;\n+\tnext;\n+    }\n+\n+    $last_was_signoff = 0;\n+    if (/Signed-off-by:/i) {\n+        if ($signoff ne \"\" && /Signed-off-by:\\s*$signoff_pattern$/i) {\n+\t    $signoff_seen = 1;\n+\t}\n+    }\n+    print $_;\n+}\n+if (!$signoff_seen && $signoff ne \"\") {\n+    if (!$last_was_signoff) {\n+        print \"\\n\";\n+    }\n+    print \"$signoff\\n\";\n+}\n+print \"\\n---\\n\\n\";\n+close FH or die \"close $commsg pipe\";\n+' \"$keep_subject\" \"$num\" \"$signoff\" $commsg\n+\n \tgit-diff-tree -p $diff_opts \"$commit\" | git-apply --stat --summary\n \techo\n \tgit-diff-tree -p $diff_opts \"$commit\"\n \techo \"-- \"\n \techo \"@@GIT_VERSION@@\"\n \n-\tcase \"$mbox\" in\n-\tt)\n-\t\techo\n-\t\t;;\n-\tesac\n+\techo\n }\n \n total=`wc -l <$series | tr -dc \"[0-9]\"`\n-- \n@@GIT_VERSION@@\n"}]}