Merge branch 'jk/log-warn-on-bogus-encoding'

Doc update plus improved error reporting.

* jk/log-warn-on-bogus-encoding:
  docs: use "character encoding" to refer to commit-object encoding
  logmsg_reencode(): warn when iconv() fails
This commit is contained in:
Junio C Hamano 2021-09-10 11:46:30 -07:00
Родитель a4b1a0ade4 1e93770888
Коммит bfe37f3dc5
4 изменённых файлов: 17 добавлений и 4 удалений

Просмотреть файл

@ -11,7 +11,7 @@ gui.displayUntracked::
in the file list. The default is "true".
gui.encoding::
Specifies the default encoding to use for displaying of
Specifies the default character encoding to use for displaying of
file contents in linkgit:git-gui[1] and linkgit:gitk[1].
It can be overridden by setting the 'encoding' attribute
for relevant files (see linkgit:gitattributes[5]).

Просмотреть файл

@ -33,14 +33,16 @@ people using 80-column terminals.
used together.
--encoding=<encoding>::
The commit objects record the encoding used for the log message
Commit objects record the character encoding used for the log message
in their encoding header; this option can be used to tell the
command to re-code the commit log message in the encoding
preferred by the user. For non plumbing commands this
defaults to UTF-8. Note that if an object claims to be encoded
in `X` and we are outputting in `X`, we will output the object
verbatim; this means that invalid sequences in the original
commit may be copied to the output.
commit may be copied to the output. Likewise, if iconv(3) fails
to convert the commit, we will output the original object
verbatim, along with a warning.
--expand-tabs=<n>::
--expand-tabs::

Просмотреть файл

@ -671,7 +671,11 @@ const char *repo_logmsg_reencode(struct repository *r,
* If the re-encoding failed, out might be NULL here; in that
* case we just return the commit message verbatim.
*/
return out ? out : msg;
if (!out) {
warning("unable to reencode commit to '%s'", output_encoding);
return msg;
}
return out;
}
static int mailmap_name(const char **email, size_t *email_len,

Просмотреть файл

@ -131,4 +131,11 @@ do
fi
done
test_expect_success 'log shows warning when conversion fails' '
enc=this-encoding-does-not-exist &&
git log -1 --encoding=$enc 2>err &&
echo "warning: unable to reencode commit to ${SQ}${enc}${SQ}" >expect &&
test_cmp expect err
'
test_done