This commit is contained in:
ljc 2024-11-27 07:31:13 +00:00 committed by admin
parent aa2d543930
commit da2d74a18a

View file

@ -0,0 +1,75 @@
### Please describe the problem.
`git annex add` fails if it encounters a file whose name ends with a carriage return.
This can happen with any directory that has a custom icon in MacOS - the directory includes an empty file named `Icon\r`.
First git-annex shows a fatal error, "No such file or directory". Then for any subsequent files being added, it fails with "git-annex: fd:18: hFlush: resource vanished (Broken pipe)".
The problem only occurs if `config.largefiles` is set.
### What steps will reproduce the problem?
[[!format sh """
# Step 1.
# Create a directory with an empty icon file.
# To type the carriage return (^M), press Ctrl-V and then Return.
mkdir example/
touch example/Icon^M
# Step 2.
# Create some test files in the directory.
# This should be a mixture of small files and large files.
echo hello > example/test1
head -c5000 < /dev/urandom > example/test2
# Step 3.
# Set `annex.largefiles` to anything less than the size of the large file above.
git annex config --set annex.largefiles largerthan=4kb
# Step 4.
# Add the directory to the git annex.
git annex add example/
"""]]
### What version of git-annex are you using? On what operating system?
- git-annex version 10.20241031
- git version 2.47.1
- bash version 5.2.37
- MacOS version 15.1.1 (Sequoia)
### Please provide any additional information below.
This happens when I run `git annex add example/`:
```
add "example/Icon\r" (non-large file; adding content to git repository) fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
fatal: could not open '/path/to/repo/example/Icon' for reading: No such file or directory
git-annex: fd:19: Data.ByteString.hGetLine: end of file
failed
add example/test1 (non-large file; adding content to git repository)
git-annex: fd:18: hFlush: resource vanished (Broken pipe)
failed
add example/test2
git-annex: fd:18: hFlush: resource vanished (Broken pipe)
failed
git-annex: fd:18: hClose: resource vanished (Broken pipe)
```
It succeeds at moving the large `test2` file into `.git/annex/objects` and symlinking it, but `git status` doesn't show any changes.
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
Yes! :) It's helped me manage an unruly mess of files, backups, and backups of backups.