From: Alex Riesen Date: Fri, 24 Feb 2006 13:23:08 GMT Subject: Re: [PATCH] git-rm: Fix to properly handle files with spaces, tabs, newlines, etc. Message-ID: <81b0412b0602240523l1b10c910q6e5d2e3cef82e306@mail.gmail.com> In-Reply-To: <8764n7rl6s.wl%cworth@cworth.org> On 2/23/06, Carl Worth wrote: > +# Setup some files to be removed, some with funny characters > +touch -- foo bar baz 'space embedded' 'tab embedded' 'newline > +embedded' -q > +git-add -- foo bar baz 'space embedded' 'tab embedded' 'newline > +embedded' -q > +git-commit -m "add files" This doesn't work on some exotic filesystems (ntfs and fat): *** t3600-rm.sh *** touch: cannot touch `tab\tembedded': No such file or directory touch: cannot touch `newline\nembedded': No such file or directory error: pathspec 'tab embedded' did not match any. error: pathspec 'newline embedded' did not match any. Maybe you misspelled it? Nothing to commit * FAIL 1: Pre-check that foo exists and is in index before git-rm foo [ -f foo ] && git-ls-files --error-unmatch foo * FAIL 2: Test that git-rm foo succeeds git-rm foo * FAIL 4: Pre-check that bar exists and is in index before "git-rm -f bar" [ -f bar ] && git-ls-files --error-unmatch bar * FAIL 5: Test that "git-rm -f bar" succeeds git-rm -f bar * FAIL 6: Post-check that bar does not exist and is not in index after "git-rm -f bar" ! [ -f bar ] && ! git-ls-files --error-unmatch bar * FAIL 7: Test that "git-rm -- -q" succeeds (remove a file that looks like an option) git-rm -- -q * FAIL 8: Test that "git-rm -f" succeeds with embedded space, tab, or newline characters. git-rm -f 'space embedded' 'tab embedded' 'newline embedded' * FAIL 10: When the rm in "git-rm -f" fails, it should not remove the file from the index git-ls-files --error-unmatch baz * failed 8 among 10 test(s)