1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
  
     | 
    
      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
> [[Fixed|done]]. Sorry this took so long, I was at a very busy point when
> you filed this and am only just getting caught up. --[[Joey]]
 
     |