Re: [PATCH/RFC v1 1/1] Support working-tree-encoding "UTF-16LE-BOM"
- From
- Adrián Gimeno Balaguer <adrigibal@gmail.com>
- Date
- Dec 29, 2018, 15:48 UTC
- Message-ID
- <CADN+U_Mo4Ui-rmZe1+xoHOMA4koXGNpJ5XEGYoYZfYPGqP9VPQ@mail.gmail.com>
- In-Reply-To
- <CADN+U_OccLuLN7_0rjikDgLT+Zvt8hka-=xsnVVLJORjYzP78Q@mail.gmail.com>
Hello again.
I appreciate the grown interest in this issue.
Torsten, may I know what is the benefit on your code? My PR solved it by only tweaking the utf8.c's function 'has_prohibited_utf_bom', which is likely the shortest way:
https://github.com/git/git/pull/550/files
In order to make sure everything is clear, here is a case list of current Git behaviour and new one after my PR, regarding this issue.
Current behaviour:
- Placing 'test.txt working-tree-encoding=UTF-16' for a new test.txt file with either UTF-16 BE or LE BOM, and comitting everything -> The file gets re-encoded from UTF-8 (as stored internally), to UTF-16 and the default system/libiconv endianness -> Problem (as long as user required the opposite endianness for any reason on his project). As a note, user can see however human-readable diffs on that file.
- Placing 'test.txt working-tree-encoding=UTF-16LE' or 'test.txt working-tree-encoding=UTF-16BE' for a new test.txt file with either UTF-16 BE or LE BOM, and comitting everything: we assume user is doing this because he requires that exact endianness, thus he writes it in order to attempt preserving it -> Git prohibites commiting it, also no human-readable diff is shown in the diff viewer/tool being used, but file is simply shown as binary.
New behaviour:
- Just got too lazy to repeat it all over, read my PR description: https://github.com/git/git/pull/550
- Git translations may need to be tweaked to in order to be consistent with new behaviour.
Thanks for your attention.