From da2d74a18aa81b319179043712b9ed53a7632eee Mon Sep 17 00:00:00 2001 From: ljc Date: Wed, 27 Nov 2024 07:31:13 +0000 Subject: [PATCH] --- ...urce_vanished___40__Broken_pipe__41__.mdwn | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 doc/bugs/hFlush__58___resource_vanished___40__Broken_pipe__41__.mdwn diff --git a/doc/bugs/hFlush__58___resource_vanished___40__Broken_pipe__41__.mdwn b/doc/bugs/hFlush__58___resource_vanished___40__Broken_pipe__41__.mdwn new file mode 100644 index 0000000000..71a559f2eb --- /dev/null +++ b/doc/bugs/hFlush__58___resource_vanished___40__Broken_pipe__41__.mdwn @@ -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.