Am 04.07.20 um 19:27 schrieb SZEDER Gábor: > diff --git a/t/t9999-test.sh b/t/t9999-test.sh > new file mode 100755 > index 0000000000..4c802d5940 > --- /dev/null > +++ b/t/t9999-test.sh > @@ -0,0 +1,47 @@ > +#!/bin/sh > + > +test_description='test' > + > +. ./test-lib.sh > + > +test_expect_success 'file to dir breakage' ' > + >file-to-dir && > + # This sorts between "file-to-dir" as a file and "file-to-dir" > + # as a directory (with the trailing / appended implicitly. > + >file-to-dir.uh-oh && > + git add file-to-dir file-to-dir.uh-oh && > + git commit -m "add a file" && > + > + # Not "git rm", to preserve "file-to-dir" in the index. > + rm file-to-dir && > + mkdir file-to-dir && > + >file-to-dir/file && > + > + # It is important to add the file in the directory; adding only > + # the directory doesnt trigger the bug. > + git add file-to-dir/file && > + > + git diff --cached --no-renames --name-status >actual && > + > + cat >expect <<-\EOF && > + D file-to-dir > + A file-to-dir/file > + EOF > + test_cmp expect actual > +' > + > +test_expect_success 'is it committed as-is?' ' > + git commit -m "replace file with a dir" && > + git ls-tree HEAD >actual && > + > + # Hardcoded SHA-1 oid :(, because with this bug present > + # "git rev-parse HEAD:file-to-dir" doesnt show the oid of > + # the tree, but the oid of the blob that shouldnt be there. > + cat >expect <<-EOF && > + 100644 blob $EMPTY_BLOB file-to-dir.uh-oh > + 040000 tree df2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078 file-to-dir You can get the hash of the tree with: echo "100644 blob $EMPTY_BLOB file" | git mktree (TAB before "file", the rest of the whitespace are regular spaces) > + EOF > + test_cmp expect actual > +' > + > +test_done >