Thread (42 messages) 42 messages, 4 authors, 2019-05-16

Re: [PATCH v3 5/5] fast-export: do automatic reencoding of commit messages only if requested

From: Elijah Newren <hidden>
Date: 2019-05-11 21:42:30

On Sat, May 11, 2019 at 2:07 PM Torsten Bögershausen [off-list ref] wrote:
On Fri, May 10, 2019 at 01:53:35PM -0700, Elijah Newren wrote:
This one is good:
quoted
+     if (unset || !strcmp(arg, "abort"))
+             reencode_mode = REENCODE_ABORT;
But here: does it make sense to use REENCODE_YES/NO to be more consistant ?
quoted
+     else if (!strcmp(arg, "yes"))
+             reencode_mode = REENCODE_PLEASE;
+     else if (!strcmp(arg, "no"))
+             reencode_mode = REENCODE_NEVER;
Didn't realize there was any such convention, and even have difficulty
finding it with grep (CONTAINS_{YES,NO} appears to be the only example
I can find), but the alternate wording seems fine; I'm happy to adopt
it.
quoted
+             case REENCODE_ABORT:
+                     die("Encountered commit-specific encoding %s in commit "
+                         "%s; use --reencode=<mode> to handle it",
Should we be more helpfull and say !use --reencode=[yes|no] to handle it ?
Sounds like a good idea; I'll adjust it.

quoted
+     sed "s/wer/i18n-no-recoding/" iso-8859-7.fi |
+             (cd new &&
+              git fast-import &&
+              # The commit object, if not re-encoded, is 240 bytes.
+              # Removing the "encoding iso-8859-7\n" header would drops 20
+              # bytes.  Re-encoding the Pi character from \xF0 in
+              # iso-8859-7 to \xCF\x80 in utf-8 would add a byte.  I would
+              # grep for the specific bytes, but Windows lamely does not
This is somewhat unclear to me. What does Windows not allow ?
quoted
+              # allow that, so just search for the expected size.
+              test 240 -eq "$(git cat-file -s i18n-no-recoding)" &&
+              # Also make sure the commit has the "encoding" header
+              git cat-file commit i18n-no-recoding >actual &&
+              grep ^encoding actual)
+'
Windows does not allow specifying the bytes I want to grep for on the
command line; it'll munge the command line, resulting in it searching
for something other than what I wanted to be searched for, and return
the wrong answer based on searching for the wrong thing.  See
https://public-inbox.org/git/f8eb246f-a936-e9df-4bb4-068b86a62baf@kdbg.org/
and https://public-inbox.org/git/nycvar.QRO.7.76.6.1905101551110.44@tvgsbejvaqbjf.bet/.

My comment was already pretty long because it looks like a crazy way
to run the test and thus it feels like I need to explain it.  And the
craziness is based on how Windows behaves; it seems insane to me that
Windows decides to munge user data (in the form of the command line
provided), so much so that it makes me wonder if I really understood
Hannes' and Dscho's explanations of what it is doing.  (How could
anyone have thought munging user data was a good idea?)  Anyway, long
story short, I'm not sure how to explain it correctly and succinctly.
Any suggestions?


Elijah
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help