analysis
This commit is contained in:
parent
029a952726
commit
5197a222aa
1 changed files with 46 additions and 0 deletions
|
@ -0,0 +1,46 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 2"""
|
||||||
|
date="2019-09-09T13:04:29Z"
|
||||||
|
content="""
|
||||||
|
To reproduce this, set LANG=C. In a unicode locale, it does not have the
|
||||||
|
problem.
|
||||||
|
|
||||||
|
"קم๗あ" is a sufficient amount of unicode to cause the failure (so is "¡").
|
||||||
|
The ascii punctuation is not involved, eg it works in a directory named
|
||||||
|
"';a&b&c `| 1
|
||||||
|
|
||||||
|
joey@darkstar:/tmp/datalad_temp_test_create_with_obscure_name18qdmqwg/קم๗あ>LANG=C git-annex init
|
||||||
|
init fatal: Unable to create '/tmp/datalad_temp_test_create_with_obscure_name18qdmqwg//.git/annex/index.lock': No such file or directory
|
||||||
|
|
||||||
|
Notice that all the unicode has been stripped out of the directory name
|
||||||
|
somehow.
|
||||||
|
|
||||||
|
This is not happening to git-annex generally; .git/annex/ get created and
|
||||||
|
populated with several files; it's the call to git update-index to create the
|
||||||
|
annex index file that is failing.
|
||||||
|
|
||||||
|
Dumping the env that git-annex sets when running that command, it includes eg
|
||||||
|
`("GIT_INDEX_FILE","/tmp/\56514\56481/.git/annex/index")`; the "¡"
|
||||||
|
has been decomposed into what I think are two unicode surrigates; that's
|
||||||
|
produced when getting the working directory.
|
||||||
|
|
||||||
|
joey@darkstar:/tmp/¡>LANG=C ghci
|
||||||
|
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
|
||||||
|
Loaded GHCi configuration from /home/joey/.etc/.ghci
|
||||||
|
ghci> import System.Posix.Directory
|
||||||
|
ghci> getWorkingDirectory
|
||||||
|
"/tmp/\56514\56481"
|
||||||
|
|
||||||
|
This shell command does not exhibit the problem:
|
||||||
|
|
||||||
|
printf '100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1\tfrotz' | GIT_INDEX_FILE=`pwd`/.git/annex/index LANG=C git update-index --index-info
|
||||||
|
|
||||||
|
So, the problem is probably in the process library's passing
|
||||||
|
of unicode environment variables to exec. I've verified the problem in ghci,
|
||||||
|
running createProcess with this:
|
||||||
|
|
||||||
|
CreateProcess {cmdspec = RawCommand "git" ["update-index","--index-info"], cwd = Nothing, env = Just [("GIT_INDEX_FILE","/tmp/\56514\56481/.git/annex/index")], std_in = Inherit, std_out = Inherit, std_err = Inherit, close_fds = False, create_group = False, delegate_ctlc = False, detach_console = False, create_new_console = False, new_session = False, child_group = Nothing, child_user = Nothing, use_process_jobs = False}
|
||||||
|
|
||||||
|
This bug needs to be forwarded to process.
|
||||||
|
"""]]
|
Loading…
Reference in a new issue