Merge branch 'jk/add-p-unmerged-fix'
"git add -p" while the index is unmerged sometimes failed to parse the diff output it internally produces and died, which has been corrected. * jk/add-p-unmerged-fix: add-patch: handle "* Unmerged path" linesmaint
commit
a9f4a01760
|
|
@ -484,7 +484,8 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
|
||||||
if (!eol)
|
if (!eol)
|
||||||
eol = pend;
|
eol = pend;
|
||||||
|
|
||||||
if (starts_with(p, "diff ")) {
|
if (starts_with(p, "diff ") ||
|
||||||
|
starts_with(p, "* Unmerged path ")) {
|
||||||
complete_file(marker, hunk);
|
complete_file(marker, hunk);
|
||||||
ALLOC_GROW_BY(s->file_diff, s->file_diff_nr, 1,
|
ALLOC_GROW_BY(s->file_diff, s->file_diff_nr, 1,
|
||||||
file_diff_alloc);
|
file_diff_alloc);
|
||||||
|
|
|
||||||
|
|
@ -1077,4 +1077,25 @@ test_expect_success 'show help from add--helper' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'reset -p with unmerged files' '
|
||||||
|
test_when_finished "git checkout --force main" &&
|
||||||
|
test_commit one conflict &&
|
||||||
|
git checkout -B side HEAD^ &&
|
||||||
|
test_commit two conflict &&
|
||||||
|
test_must_fail git merge one &&
|
||||||
|
|
||||||
|
# this is a noop with only an unmerged entry
|
||||||
|
git reset -p &&
|
||||||
|
|
||||||
|
# add files that sort before and after unmerged entry
|
||||||
|
echo a >a &&
|
||||||
|
echo z >z &&
|
||||||
|
git add a z &&
|
||||||
|
|
||||||
|
# confirm that we can reset those files
|
||||||
|
printf "%s\n" y y | git reset -p &&
|
||||||
|
git diff-index --cached --diff-filter=u HEAD >staged &&
|
||||||
|
test_must_be_empty staged
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue