diff --git a/Documentation/git-mailinfo.txt b/Documentation/git-mailinfo.txt index ea0a06557f..5088bbea84 100644 --- a/Documentation/git-mailinfo.txt +++ b/Documentation/git-mailinfo.txt @@ -33,15 +33,13 @@ OPTIONS format-patch --mbox' output. -u:: - By default, the commit log message, author name and - author email are taken from the e-mail without any - charset conversion, after minimally decoding MIME - transfer encoding. This flag causes the resulting - commit to be encoded in the encoding specified by - i18n.commitencoding configuration (defaults to utf-8) by - transliterating them. - Note that the patch is always used as is without charset - conversion, even with this flag. + The commit log message, author name and author email are + taken from the e-mail, and after minimally decoding MIME + transfer encoding, re-coded in UTF-8 by transliterating + them. This used to be optional but now it is the default. ++ +Note that the patch is always used as-is without charset +conversion, even with this flag. --encoding=:: Similar to -u but if the local convention is different diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c index a67f3eb90b..583da38b67 100644 --- a/builtin-mailinfo.c +++ b/builtin-mailinfo.c @@ -515,12 +515,9 @@ static void convert_to_utf8(char *line, char *charset) char *input_charset = *charset ? charset : latin_one; char *out = reencode_string(line, metainfo_charset, input_charset); - if (!out) { - fprintf(stderr, "cannot convert from %s to %s\n", - input_charset, metainfo_charset); - *charset = 0; - return; - } + if (!out) + die("cannot convert from %s to %s\n", + input_charset, metainfo_charset); strcpy(line, out); free(out); } @@ -797,17 +794,23 @@ static const char mailinfo_usage[] = int cmd_mailinfo(int argc, const char **argv, const char *prefix) { + const char *def_charset; + /* NEEDSWORK: might want to do the optional .git/ directory * discovery */ git_config(git_default_config); + def_charset = (git_commit_encoding ? git_commit_encoding : "utf-8"); + metainfo_charset = def_charset; + while (1 < argc && argv[1][0] == '-') { if (!strcmp(argv[1], "-k")) keep_subject = 1; else if (!strcmp(argv[1], "-u")) - metainfo_charset = (git_commit_encoding - ? git_commit_encoding : "utf-8"); + metainfo_charset = def_charset; + else if (!strcmp(argv[1], "-n")) + metainfo_charset = NULL; else if (!strncmp(argv[1], "--encoding=", 11)) metainfo_charset = argv[1] + 11; else diff --git a/git-am.sh b/git-am.sh index abd32a8b1c..59d663ba9e 100755 --- a/git-am.sh +++ b/git-am.sh @@ -228,6 +228,8 @@ fi if test "$(cat "$dotest/utf8")" = t then utf8=-u +else + utf8=-n fi if test "$(cat "$dotest/keep")" = t then diff --git a/git-applymbox.sh b/git-applymbox.sh index 7e690a16ee..1f68599ae5 100755 --- a/git-applymbox.sh +++ b/git-applymbox.sh @@ -28,7 +28,7 @@ while case "$#" in 0) break ;; esac do case "$1" in -u) utf8=-u ;; - -n) utf8= ;; + -n) utf8=-n ;; -k) keep_subject=-k ;; -q) query_apply=t ;; -c) continue="$2"; resume=f; shift ;;