aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-03-07 14:53:50 -0800
committerJunio C Hamano <gitster@pobox.com>2010-03-07 14:53:50 -0800
commitcb16bcc36965f28845e4fae15c36280a2506f1be (patch)
treea1acd0c9c1b89d30749f4414d727064f1c416fd5
parent11a1a49a16a52ff9b684a430d68b8982ed313427 (diff)
parent3fc0d131c573f6f774e2e4abba9cbda694b08321 (diff)
downloadgit-cb16bcc36965f28845e4fae15c36280a2506f1be.tar.gz
git-cb16bcc36965f28845e4fae15c36280a2506f1be.tar.xz
Merge branch 'jk/maint-rmdir-fix' into maint-1.6.6
* jk/maint-rmdir-fix: rm: fix bug in recursive subdirectory removal
-rw-r--r--dir.c2
-rwxr-xr-xt/t3600-rm.sh8
2 files changed, 9 insertions, 1 deletions
diff --git a/dir.c b/dir.c
index d0999ba05..5d0a3084d 100644
--- a/dir.c
+++ b/dir.c
@@ -933,7 +933,7 @@ int remove_path(const char *name)
slash = dirs + (slash - name);
do {
*slash = '\0';
- } while (rmdir(dirs) && (slash = strrchr(dirs, '/')));
+ } while (rmdir(dirs) == 0 && (slash = strrchr(dirs, '/')));
free(dirs);
}
return 0;
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index 76b1bb454..0aaf0ad84 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -271,4 +271,12 @@ test_expect_success 'choking "git rm" should not let it die with cruft' '
test "$status" != 0
'
+test_expect_success 'rm removes subdirectories recursively' '
+ mkdir -p dir/subdir/subsubdir &&
+ echo content >dir/subdir/subsubdir/file &&
+ git add dir/subdir/subsubdir/file &&
+ git rm -f dir/subdir/subsubdir/file &&
+ ! test -d dir
+'
+
test_done