update
This commit is contained in:
parent
ecec42bbb4
commit
f1d33568b0
1 changed files with 39 additions and 0 deletions
|
@ -0,0 +1,39 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 1"""
|
||||||
|
date="2016-01-26T16:21:56Z"
|
||||||
|
content="""
|
||||||
|
I can reproduce this with LANG=C.
|
||||||
|
|
||||||
|
The cause seems to be that concurrent-output uses Text internally, and
|
||||||
|
Strings encoded using the filesystem encoding fail to round-trip through
|
||||||
|
Text.
|
||||||
|
|
||||||
|
I tried changing concurrent-output from using `T.hPutStr stdout t` to
|
||||||
|
`hPutStr stdout (T.unpack t)` but that doesn't help; by the time the String
|
||||||
|
comes back out it's lost the filesystem encoding and so contains invalid
|
||||||
|
characters.
|
||||||
|
|
||||||
|
Seems that the only way to fix this would be to change concurrent-output
|
||||||
|
not to use Text. However, it can't use ByteString because it needs to
|
||||||
|
operate on individual unicode characters when updating a region.
|
||||||
|
Which leaves only String, which I fear would slow
|
||||||
|
concurrent-output down quite significantly.
|
||||||
|
|
||||||
|
(It might be possible to use ByteString for most of it, and fall back to
|
||||||
|
String only when calculating the display update and so avoid most of the
|
||||||
|
permformance impact. I have an incomplete conversion headed in that
|
||||||
|
direction in the use-bytestring branch in concurrent-output git repo. After
|
||||||
|
spending 2 hours on it, it's nowhere near done.)
|
||||||
|
|
||||||
|
Since git-annex remains usable without -J, and since this only affects
|
||||||
|
systems that don't have a unicode locale configured and yet are using
|
||||||
|
unicode filenames (or systems that do use a unicode locale and have
|
||||||
|
filenames that are not valid utf-8), I'm kind of inclined not to massively
|
||||||
|
rework and likely slow down concurrent-output just to handle this case.
|
||||||
|
But I don't like it.
|
||||||
|
|
||||||
|
Workaround: Compile git-annex with -f-ConcurrentOutput and the problem
|
||||||
|
will be avoided, although then you won't get progress displays when doing a
|
||||||
|
`git-annex get -Jn`
|
||||||
|
"""]]
|
Loading…
Reference in a new issue