git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v5 5/7] convert: add 'working-tree-encoding' attribute

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 31, 2018, 22:45 UTC
Message-ID
<xmqqtvv1r6kr.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<57086A32-6A2A-4B66-A355-10408C9FE0B0@gmail.com>
Lars Schneider <larsxschneider@gmail.com> writes:
Show 19 quoted lines
>> I am not sure why this is special cased and other codepaths have "if
>> WRITE_OBJECT then die, otherwise error" checks, so no, I do not
>> agree with your reasoning, at least not yet.
>
> The convert_to_git()/encode_to_git() machinery is used in two different
> kinds of code paths:
>
> Some code paths actually write to the Git database (indicated by the 
> CONV_WRITE_OBJECT flag). I consider these the "critical/important" code 
> paths and I don't want to tolerate any encoding errors in these cases as 
> the errors would be "forever" in the Git database. That's why I call 
> die() on errors for these cases to abort whatever we are doing. 
>
> Other code paths do not write to the Git database (e.g. during "git 
> checkout" we use the code to ensure that we are moving away from the 
> exact state that we think we are moving away). In these code paths I am 
> less concerned about encoding errors. I also don't want to abort the 
> operation (e.g. "git checkout") in these cases. That's why I only inform
> the user about the problem with an error message.

Warning the users early while they are doing non-writing operation to give them chance to adjust the contents, before they actually need to register the contents as objects by writing, at which point we need to die. That's a reasonable distinction and all of that I already agree with.

What was questionable and left unexplained was why this roundtrip thing needs to be different.

Show 7 quoted lines
> The encoding round-trip check can be expensive. That's why I decided 
> initially to only execute the check in the "critical/important" 
> write-to-Git-database situations (CONV_WRITE_OBJECT flag!). I also 
> decided to run it only if the "SHIFT-JIS" encoding is used as this was
> the only encoding that I could find which reportedly does not round-trip
> with UTF-8 (although I was not able to replicate the round-trip 
> problems). 

I still do not see why you have problems with the approach of maintaining a configurable set of "iffy" encodings (and throw SJIS into the default list) to achieve all of the above and more. For SJIS users, instead of having to set environment variables to obtain safe behaviour, they automatically get safe behaviour. When using encodings that are not problematic, they do not need to spend cycles checking round-trip. And when SJIS users know they do not care about roundtrip checks, they can just configure SJIS away from the list.

Previous: Lars SchneiderNext: tboegi@web.de
Message 33 of 43 in “convert: add support for different encodings”
  1. 0/6 convert: add support for different encodingslars.schneider@autodesk.com, Jan 20, 2018
  2. 1/6 strbuf: remove unnecessary NUL assignment in xstrdup_tolower()lars.schneider@autodesk.com, Jan 20, 2018
  3. 2/6 strbuf: add xstrdup_toupper()lars.schneider@autodesk.com, Jan 20, 2018
  4. 3/6 utf8: add function to detect prohibited UTF-16/32 BOMlars.schneider@autodesk.com, Jan 20, 2018
  5. 4/6 utf8: add function to detect a missing UTF-16/32 BOMlars.schneider@autodesk.com, Jan 20, 2018
  6. 5/6 convert: add 'working-tree-encoding' attributelars.schneider@autodesk.com, Jan 20, 2018
  7. Simon RuderichJan 21, 2018
  8. Lars SchneiderJan 22, 2018
  9. Jeff KingJan 23, 2018
  10. Simon RuderichJan 23, 2018
  11. Jeff KingJan 23, 2018
  12. Junio C HamanoJan 23, 2018
  13. Simon RuderichJan 23, 2018
  14. SQUASH convert: add tracing for 'working-tree-encoding' attributelars.schneider@autodesk.com, Jan 22, 2018
  15. Eric SunshineJan 22, 2018
  16. SQUASH convert: add tracing for 'working-tree-encoding' attributelars.schneider@autodesk.com, Jan 23, 2018
  17. 6/6 convert: add tracing for 'working-tree-encoding' attributelars.schneider@autodesk.com, Jan 20, 2018
  18. Torsten BögershausenJan 23, 2018
  19. Junio C HamanoJan 23, 2018
  20. 0/7 convert: add support for different encodingstboegi@web.de, Jan 29, 2018
  21. 2/7 strbuf: add xstrdup_toupper()tboegi@web.de, Jan 29, 2018
  22. 3/7 utf8: add function to detect prohibited UTF-16/32 BOMtboegi@web.de, Jan 29, 2018
  23. 6/7 convert: add tracing for 'working-tree-encoding' attributetboegi@web.de, Jan 29, 2018
  24. 4/7 utf8: add function to detect a missing UTF-16/32 BOMtboegi@web.de, Jan 29, 2018
  25. Junio C HamanoJan 30, 2018
  26. Lars SchneiderJan 30, 2018
  27. Junio C HamanoJan 30, 2018
  28. 5/7 convert: add 'working-tree-encoding' attributetboegi@web.de, Jan 29, 2018
  29. Junio C HamanoJan 30, 2018
  30. Lars SchneiderJan 30, 2018
  31. Junio C HamanoJan 30, 2018
  32. Lars SchneiderJan 31, 2018
  33. Junio C HamanoJan 31, 2018
  34. 7/7 Careful with CRLF when using e.g. UTF-16 for working-tree-encodingtboegi@web.de, Jan 29, 2018
  35. Lars SchneiderJan 30, 2018
  36. Torsten BögershausenJan 30, 2018
  37. Lars SchneiderJan 30, 2018
  38. Torsten BögershausenJan 31, 2018
  39. Lars SchneiderJan 31, 2018
  40. Junio C HamanoFeb 2, 2018
  41. Torsten BögershausenFeb 7, 2018
  42. Junio C HamanoFeb 7, 2018
  43. 1/7 strbuf: remove unnecessary NUL assignment in xstrdup_tolower()tboegi@web.de, Jan 29, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.