Browse Source

Remove empty directories in recursive merge

The code was actually supposed to do that, but was accidentally broken.
Noticed by Anders Melchiorsen.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Alex Riesen 17 years ago committed by Shawn O. Pearce
parent
commit
41f13af558
  1. 4
      builtin-merge-recursive.c
  2. 11
      t/t3030-merge-recursive.sh

4
builtin-merge-recursive.c

@ -444,10 +444,8 @@ static int remove_file(int clean, const char *path, int no_wd) @@ -444,10 +444,8 @@ static int remove_file(int clean, const char *path, int no_wd)
return -1;
}
if (update_working_directory) {
unlink(path);
if (errno != ENOENT || errno != EISDIR)
if (remove_path(path) && errno != ENOENT)
return -1;
remove_path(path);
}
return 0;
}

11
t/t3030-merge-recursive.sh

@ -535,4 +535,15 @@ test_expect_success 'reset and bind merge' ' @@ -535,4 +535,15 @@ test_expect_success 'reset and bind merge' '

'

test_expect_success 'merge removes empty directories' '

git reset --hard master &&
git checkout -b rm &&
git rm d/e &&
git commit -mremoved-d/e &&
git checkout master &&
git merge -s recursive rm &&
test_must_fail test -d d
'

test_done

Loading…
Cancel
Save