packages feed

git-annex-3.20120825: doc/bugs/commitBuffer:_invalid_argument___40__invalid_character__41__.mdwn

What steps will reproduce the problem?

    $ git init a.git
    Initialized empty Git repository in /var/tmp/git-annex-bug/a.git/.git/
    $ cd a.git
    $ git annex init a
    init a ok
    (Recording state in git...)
    $ touch Ren$'\351'
    $ git annex add Ren$'\351'
    add René (checksum...) ok
    (Recording state in git...)
    $ git ci -m "Added Rene'."
    [master (root-commit) a61b796] Added Rene'.
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 120000 "Ren\351"
    $ cd ..
    $ git clone -o a a.git b.git
    Cloning into b.git...
    remote: Counting objects: 13, done.
    remote: Compressing objects: 100% (9/9), done.
    remote: Total 13 (delta 1), reused 0 (delta 0)
    Receiving objects: 100% (13/13), done.
    Resolving deltas: 100% (1/1), done.
    $ cd b.git
    $ git annex copy --from=a --fast -v
    (merging a/git-annex into git-annex...)
    copy René 
    git-annex: /var/tmp/git-annex-bug/b.git/.git/annex/transfer/download/7c5ee764-e8c6-11e1-b0c5-67c6ec1236d6/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: commitBuffer: invalid argument (invalid character)
    failed
    (Recording state in git...)
    git-annex: copy: 1 failed

What is the expected output? What do you see instead?

Expect that files will be copied, but they are not.

What version of git-annex are you using? On what operating system?

    $ echo $LANG
    en_US.UTF-8
    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 11.10
    Release:	11.10
    Codename:	oneiric
    $ uname -a
    Linux pdx-desktop 3.0.0-23-generic #39-Ubuntu SMP Thu Jul 19 19:18:53 UTC 2012 i686 i686 i386 GNU/Linux
    $ bash --version
    GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

    This is free software; you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    $ ghc --version
    The Glorious Glasgow Haskell Compilation System, version 7.4.2
    $ git annex version
    git-annex version: 3.20120807
    local repository version: 3
    default repository version: 3
    supported repository versions: 3
    upgrade supported from repository versions: 0 1 2

Please provide any additional information below.

The problem is related to weird characters in file names.  In the
above example, the "weird character" is an accented 'e' (entered with
$'\351' in bash and zsh).  I am able to add the files with weird
characters in their name to one annex, but I cannot copy them to other
annexes using `git annex copy`.

The above example is a simplification of a real problem I am
experiencing.  In my real scenario, the file is not empty.  See the
attachment for some variations, including with non-empty
files. UPDATE: I'm not allowed to add attachments. See below.

May be related to these (long-ago fixed) bugs:
http://git-annex.branchable.com/todo/support-non-utf8-locales/


"Attachment": Here are my notes, including more examples:

    Programs I'm using:

    $ echo $LANG
    en_US.UTF-8
    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 11.10
    Release:	11.10
    Codename:	oneiric
    $ uname -a
    Linux pdx-desktop 3.0.0-23-generic #39-Ubuntu SMP Thu Jul 19 19:18:53 UTC 2012 i686 i686 i386 GNU/Linux
    $ bash --version
    GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

    This is free software; you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    $ ghc --version
    The Glorious Glasgow Haskell Compilation System, version 7.4.2
    $ git annex version
    git-annex version: 3.20120807
    local repository version: 3
    default repository version: 3
    supported repository versions: 3
    upgrade supported from repository versions: 0 1 2


    Simplest way to see problem: one empty file with weird character
    (accented e: $'\351') in name:

    $ git init a.git
    Initialized empty Git repository in /var/tmp/git-annex-bug/a.git/.git/
    $ cd a.git
    $ git annex init a
    init a ok
    (Recording state in git...)
    $ touch Ren$'\351'
    $ git annex add Ren$'\351'
    add René (checksum...) ok
    (Recording state in git...)
    $ git ci -m "Added Rene'."
    [master (root-commit) a61b796] Added Rene'.
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 120000 "Ren\351"
    $ cd ..
    $ git clone -o a a.git b.git
    Cloning into b.git...
    remote: Counting objects: 13, done.
    remote: Compressing objects: 100% (9/9), done.
    remote: Total 13 (delta 1), reused 0 (delta 0)
    Receiving objects: 100% (13/13), done.
    Resolving deltas: 100% (1/1), done.
    $ cd b.git
    $ git annex copy --from=a --fast -v
    (merging a/git-annex into git-annex...)
    copy René 
    git-annex: /var/tmp/git-annex-bug/b.git/.git/annex/transfer/download/7c5ee764-e8c6-11e1-b0c5-67c6ec1236d6/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: commitBuffer: invalid argument (invalid character)
    failed
    (Recording state in git...)
    git-annex: copy: 1 failed


    Problem disappears with two empty files:

    $ cd ..
    $ git init a2.git
    Initialized empty Git repository in /var/tmp/git-annex-bug/a2.git/.git/
    $ cd a2.git
    $ git annex init a2
    init a2 ok
    (Recording state in git...)
    $ touch Ren$'\351'
    $ git annex add Ren$'\351'
    add René (checksum...) ok
    (Recording state in git...)
    $ git ci -m "Add Ren$'\351'."
    [master (root-commit) 62ac1c8] Add Ren$'\351'.
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 120000 "Ren\351"
    $ touch Rene
    $ git annex add Rene
    add Rene (checksum...) ok
    (Recording state in git...)
    $ git ci -m "Add Rene."
    [master c455523] Add Rene.
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 120000 Rene
    $ cd ..
    $ git clone -o a2 a2.git b2.git
    Cloning into b2.git...
    done.
    $ cd b2.git
    $ git annex copy --from=a2 --fast -v
    (merging a2/git-annex into git-annex...)
    copy Rene (from a2...) ok
    (Recording state in git...)


    Problem returns with two non-empty files:

    $ cd ..
    $ git init a4.git
    Initialized empty Git repository in /var/tmp/git-annex-bug/a4.git/.git/
    $ cd a4.git
    $ git annex init a4
    init a4 ok
    (Recording state in git...)
    $ touch Ren$'\351'
    $ rm Ren$'\351'
    $ ls
    $ echo "some content" > Ren$'\351'
    $ git annex add Ren$'\351'
    add René (checksum...) ok
    (Recording state in git...)
    $ git ci -m "Add Ren$'\351'."
    [master (root-commit) f090d90] Add Ren$'\351'.
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 120000 "Ren\351"
    $ echo "some other content" > Rene
    $ git annex add Rene
    add Rene (checksum...) ok
    (Recording state in git...)
    $ git ci -m "Add Rene."
    [master 97c20cd] Add Rene.
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 120000 Rene
    $ cd ..
    $ git clone -o a4 a4.git b4.git
    Cloning into b4.git...
    done.
    $ cd b4.git
    $ git annex copy --from=a4 --fast -v
    (merging a4/git-annex into git-annex...)
    copy Rene (from a4...) ok
    copy René 
    git-annex: /var/tmp/git-annex-bug/b4.git/.git/annex/transfer/download/a5fcd0d4-e8c8-11e1-bb41-43ce1cb9a9f1/SHA256-s13--1c87b6727f523662df714f06a94ea27fa4d9050c38f4f7712bd4663ffbfdfa01: commitBuffer: invalid argument (invalid character)
    failed
    (Recording state in git...)
    git-annex: copy: 1 failed