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

Re: [PATCH v2] [RFC] git-p4: improve encoding handling to support inconsistent encodings

From
Andrew Oakley <andrew@adoakley.name>
Date
Apr 13, 2022, 20:41 UTC
Message-ID
<20220413214109.48097ac1@ado-tr.dyn.home.arpa>
In-Reply-To
<pull.1206.v2.git.1649831069578.gitgitgadget@gmail.com>

Thanks for doing this. I've been meaning to write some similar code for years and never quite got around to it. So maybe my opinion shouldn't be worth much :/.

On Wed, 13 Apr 2022 06:24:29 +0000 "Tao Klerks via GitGitGadget" <gitgitgadget@gmail.com> wrote:

Show 8 quoted lines
> Make the changelist-description- and user-fullname-handling code
> python-runtime-agnostic, introducing three "strategies" selectable via
> config:
> - 'legacy', behaving as previously under python2,
> - 'strict', behaving as previously under python3, and
> - 'fallback', favoring utf-8 but supporting a secondary encoding when
> utf-8 decoding fails, and finally replacing remaining unmappable
> bytes.
I was thinking about making the config option be a list of encodings to
try.  So the options you've given map something like this:
- "legacy" -> "raw"
- "strict" -> "utf8"
- "fallback" -> "utf8 cp1252" (or whatever is configured)

This doesn't handle the case of using a replacement character, but in reality I suspect that fallback encoding will always be a legacy 8bit codec anyway.

I think what you've proposed is fine too, I'm not sure what would end up being easier to understand.

Show 6 quoted lines
>      * Does it make sense to make "fallback" the default decoding
> strategy in python3? This is definitely a change in behavior, but I
> believe for the better; failing with "we defaulted to strict, but you
> can run again with this other option if you want it to work" seems
> unkind, only making sense if we thought fallback to cp1252 would be
> wrong in a substantial proportion of cases...

The only issue I can see with changing the default is that it might lead to a surprising loss of data for someone migrating to git. Maybe print a warning the first time git-p4 encounters something that can't be decoded as UTF-8, but then continue with the fallback to cp1252?

Show 6 quoted lines
>      * Is it OK to duplicate the bulk of the testing code across
>        t9835-git-p4-metadata-encoding-python2.sh and
>        t9836-git-p4-metadata-encoding-python3.sh?
>      * Is it OK to explicitly call "git-p4.py" in tests, rather than
> the build output "git-p4", in order to be able to select the python
>        runtime on a per-test basis? Is there a better approach?
I tried to find a nicer way to do this and failed.
>      * Is the naming of the strategies appropriate? Should the default
>        python2 strategy be called something less opinionated, like
>        "passthrough"?
I think that "passthrough" or "raw" would be more descriptive names.

The changes to git-p4 itself look good to me. I think that dealing with bytes more and strings less will be good going forward.

Previous: Tao KlerksNext: Tao Klerks
Message 7 of 13 in “[RFC] git-p4: improve encoding handling to support inconsistent encodings”
  1. [RFC] git-p4: improve encoding handling to support inconsistent encodingsTao Klerks via GitGitGadget, Apr 11, 2022
  2. [RFC] git-p4: improve encoding handling to support inconsistent encodingsTao Klerks via GitGitGadget, Apr 13, 2022
  3. Ævar Arnfjörð BjarmasonApr 13, 2022
  4. Tao KlerksApr 13, 2022
  5. Ævar Arnfjörð BjarmasonApr 13, 2022
  6. Tao KlerksApr 14, 2022
  7. Andrew OakleyApr 13, 2022
  8. Tao KlerksApr 14, 2022
  9. Andrew OakleyApr 17, 2022
  10. Tao KlerksApr 19, 2022
  11. git-p4: improve encoding handling to support inconsistent encodingsTao Klerks via GitGitGadget, Apr 19, 2022
  12. Tao KlerksApr 19, 2022
  13. git-p4: improve encoding handling to support inconsistent encodingsTao Klerks via GitGitGadget, Apr 30, 2022

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.