OVERVIEW
"git rm" will remove more files than specified. This is either a bug or undocumented behavior (not in the man pages).
SETUP
1. In a git repository, create an empty directory OR a chain of empty directories
$ mkdir -p path/to/some/
2. Create a file in the deepest directory and add it to tracking
$ touch path/to/some/file $ git add path/to/some/file $ git commit -m 'add path/to/some/file'
THE BUG
Run 'git rm' on the tracked file.
EXPECTED BEHAVIOR
$ git rm path/to/some/file rm 'path/to/some/file' $ ls path to/ $ ls path/to some/
Note that path/, path/to/, and path/to/some/ still exist.
ACTUAL BEHAVIOR
$ git rm path/to/some/file rm 'path/to/some/file' $ ls path ls: cannot access 'path': No such file or directory
The entire chain of empty directories is removed, despite the fact the git outputs only "rm 'path/to/some/file'".
This ONLY occurs when all the directories in the chain are empty after the tracked file has been removed.
This behavior is NOT documented in the man pages.
I propose that 'rmdir' statements are added to 'git rm' output, or that the man pages be updated to reflect this behavior.
Best, Thomas Fischer