Thread (4 messages) flat view 4 messages, 2 authors, 2016-06-15

Re: Should the --encoding argument to log/show commands make any guarantees about their output?

From: Torsten Bögershausen <hidden>
Date: 2016-06-15 23:05:20

On 2015-06-16 11.38, Jan-Philip Gehrcke wrote:
On 15.06.2015 18:21, Torsten Bögershausen wrote:
quoted
On 2015-06-15 10.50, Jan-Philip Gehrcke wrote:
quoted
Let me describe what I think it currently does:

The program attempts to re-code a log message, so it follows the chain

     raw input -> unicode -> raw output
Not sure what "raw input/output" means.
But there is only one reencode step involved, e.g.
input(8859) -> output(UTF-8)
I probably need to correct myself:
pretty.c
void format_commit_message(const struct commit *commit,

The the message is converted from the commit encoding into UTF-8.
When the log encoding is different from UTF-8,
There is a second conversio (as you said).
(But not in your case, here the second conversion is skipped)

[snip]
I'd be willing to contribute, but of course there must be a discussion and an
agreement before that, if there is need to change something at all, and what
exactly.
[]
What do you think?
See commit.c:

/*
 * This verifies that the buffer is in proper utf8 format.
 *
 * If it isn't, it assumes any non-utf8 characters are Latin1,
 * and does the conversion.
 */
static int verify_utf8(struct strbuf *buf)
I think the --encoding option would have ideal semantics for described behavior.

However, I guess maintaining backwards compatibility is an issue here. On the
other hand, I realize that the --encoding option undergoes changes: the docs for
git log in release 2.4.3 do not even list the --encoding option anymore. Why is
that? I haven't found a corresponding changelog/release notes entry.
It still seems to work:
git log --encoding ISO-8859-1 | xxd | grep gersha | less
includes this line:
7465 6e20 42f6 6765 7273 6861 7573 656e  ten B.gershausen


So my suggestion (in short):
move verify_utf8() from commit.c into utf8.c,
make it non-static, and add a prototype in utf8.h

Use that function in pretty.c (and commit.c), test it.
Make a patch out of it and send it to the list.

In the ideal world the patch will include a test case,
but I don't know how easy it is to create such a commit.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help