Adam Milazzo [off-list ref] writes:
Repro steps:
1. git init
2. mkdir d
3. touch d/a
4. chmod -w d
5. git clean -fd
Actual result:
Git doesn't remove anything, saying "warning: failed to remove d/a".
Expected result:
Git should remove the subdirectory 'd' along with its
contents. Note that git can remove a read-only file (touch b;
chmod -w b; git clean -f) with no problem.
It is how UNIX-like filesystem works, isn't it?
As long as a directory D is writable/executable, any regular file
inside it can be removed regardless of the perm-bits of the file.
mkdir d
touch d/a
chmod -w d
rm d/a
would not let you remove the file d/a from d/, exactly because you
cannot modify d/ (it is not writable).