Merge branch 'js/add-i-delete'

Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.

* js/add-i-delete:
  add --interactive: allow `update` to stage deleted files
This commit is contained in:
Junio C Hamano 2022-07-02 21:56:08 -07:00
Родитель e4a4b31577 4788e8b256
Коммит 0f0bc2124b
2 изменённых файлов: 19 добавлений и 2 удалений

Просмотреть файл

@ -697,8 +697,16 @@ static int run_update(struct add_i_state *s, const struct pathspec *ps,
for (i = 0; i < files->items.nr; i++) {
const char *name = files->items.items[i].string;
if (files->selected[i] &&
add_file_to_index(s->r->index, name, 0) < 0) {
struct stat st;
if (!files->selected[i])
continue;
if (lstat(name, &st) && is_missing_file_error(errno)) {
if (remove_file_from_index(s->r->index, name) < 0) {
res = error(_("could not stage '%s'"), name);
break;
}
} else if (add_file_to_index(s->r->index, name, 0) < 0) {
res = error(_("could not stage '%s'"), name);
break;
}

Просмотреть файл

@ -103,6 +103,15 @@ test_expect_success 'status works (commit)' '
grep "+1/-0 *+2/-0 file" output
'
test_expect_success 'update can stage deletions' '
>to-delete &&
git add to-delete &&
rm to-delete &&
test_write_lines u t "" | git add -i &&
git ls-files to-delete >output &&
test_must_be_empty output
'
test_expect_success 'setup expected' '
cat >expected <<-\EOF
index 180b47c..b6f2c08 100644