Try unsetting LANG and passing git-annex unicode filenames.

joey@gnu:~/tmp/aa>git annex add ./Üa
add add add add git-annex: <stdout>: commitAndReleaseBuffer: invalid
argument (Invalid or incomplete multibyte or wide character)

Interestingly, I can get the same crash in the de_DE.UTF-8 locale with certian input filenames, while in en_US.UTF-8, it's ok. The workaround below avoided the problem in de_DE.UTF-8. --Joey

Put in the utf-8 forcing workaround for now. done --Joey

underlying haskell problem and workaround

The same problem can be seen with a simple haskell program:

import System.Environment
import Codec.Binary.UTF8.String
main = do
        args <- getArgs
        putStrLn $ decodeString $ args !! 0

joey@gnu:~/src/git-annex>LANG= runghc ~/foo.hs Ü
foo.hs: <stdout>: hPutChar: invalid argument (Invalid or incomplete multibyte or wide character)

(The call to decodeString is necessary to make the input unicode string be displayed properly in a utf8 locale, but does not contribute to this problem.)

I guess that haskell is setting the IO encoding to latin1, which is documented to error out on characters > 255.

So this program doesn't have the problem -- but may output garbage on non-utf-8 capable terminals:

import System.IO
main = do
    hSetEncoding stdout utf8
        args <- getArgs
        putStrLn $ decodeString $ args !! 0
Comments on this page are closed.