Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--symlinks.c8
-rwxr-xr-xt/t2501-cwd-empty.sh10
2 files changed, 12 insertions, 6 deletions
diff --git a/symlinks.c b/symlinks.c
index 5232d02020..c667baa949 100644
--- a/symlinks.c
+++ b/symlinks.c
@@ -279,7 +279,9 @@ static void do_remove_scheduled_dirs(int new_len)
{
while (removal.len > new_len) {
removal.buf[removal.len] = '\0';
- if (rmdir(removal.buf))
+ if ((startup_info->original_cwd &&
+ !strcmp(removal.buf, startup_info->original_cwd)) ||
+ rmdir(removal.buf))
break;
do {
removal.len--;
@@ -293,6 +295,10 @@ void schedule_dir_for_removal(const char *name, int len)
{
int match_len, last_slash, i, previous_slash;
+ if (startup_info->original_cwd &&
+ !strcmp(name, startup_info->original_cwd))
+ return; /* Do not remove the current working directory */
+
match_len = last_slash = i =
longest_path_match(name, len, removal.buf, removal.len,
&previous_slash);
diff --git a/t/t2501-cwd-empty.sh b/t/t2501-cwd-empty.sh
index 5af1fec6fe..e4502d24d5 100755
--- a/t/t2501-cwd-empty.sh
+++ b/t/t2501-cwd-empty.sh
@@ -109,7 +109,7 @@ test_required_dir_removal () {
}
test_expect_success 'checkout does not clean cwd incidentally' '
- test_incidental_dir_removal failure git checkout init
+ test_incidental_dir_removal success git checkout init
'
test_expect_success 'checkout fails if cwd needs to be removed' '
@@ -117,7 +117,7 @@ test_expect_success 'checkout fails if cwd needs to be removed' '
'
test_expect_success 'reset --hard does not clean cwd incidentally' '
- test_incidental_dir_removal failure git reset --hard init
+ test_incidental_dir_removal success git reset --hard init
'
test_expect_success 'reset --hard fails if cwd needs to be removed' '
@@ -125,7 +125,7 @@ test_expect_success 'reset --hard fails if cwd needs to be removed' '
'
test_expect_success 'merge does not clean cwd incidentally' '
- test_incidental_dir_removal failure git merge reverted
+ test_incidental_dir_removal success git merge reverted
'
# This file uses some simple merges where
@@ -158,7 +158,7 @@ test_expect_success 'merge fails if cwd needs to be removed' '
'
test_expect_success 'cherry-pick does not clean cwd incidentally' '
- test_incidental_dir_removal failure git cherry-pick reverted
+ test_incidental_dir_removal success git cherry-pick reverted
'
test_expect_success 'cherry-pick fails if cwd needs to be removed' '
@@ -174,7 +174,7 @@ test_expect_success 'rebase fails if cwd needs to be removed' '
'
test_expect_success 'revert does not clean cwd incidentally' '
- test_incidental_dir_removal failure git revert HEAD
+ test_incidental_dir_removal success git revert HEAD
'
test_expect_success 'revert fails if cwd needs to be removed' '