aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/commitBuffer:_invalid_argument___40__invalid_character__41__.mdwn
blob: 027d22431bbb5d17a46e9abbedce0f38ecfd4401 (plain)
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]]