Junio C Hamano wrote: > > - while (pos <= active_nr) { > + while (pos < active_nr) { Thanks, that fixes it. It gives a weird output now, however: # On branch side # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add <file>..." to mark resolution) # # deleted by us : foo # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # no changes added to commit (use "git add" and/or "git commit -a") So it detects there are worktree changes, but then decides not to show them because it's an unmerged entry. I think the following should go in 3/5, but note that I haven't looked at the rest of the code to check if it breaks anything: -- 8< -- diff --git i/wt-status.c w/wt-status.c index 6370fe2..5a68297 100644 --- i/wt-status.c +++ w/wt-status.c @@ -400,7 +400,8 @@ static int wt_status_check_worktree_changes(struct wt_status *s) for (i = 0; i < s->change.nr; i++) { struct wt_status_change_data *d; d = s->change.items[i].util; - if (!d->worktree_status) + if (!d->worktree_status + || d->index_status == DIFF_STATUS_UNMERGED) continue; changes = 1; if (d->worktree_status == DIFF_STATUS_DELETED) -- >8 -- And with that fixed, the test I posted earlier should be changed to the following so that it checks the output (the old version detects failure even for a working git-status, because that exits 1): -- 8< -- diff --git a/t/t7060-wtstatus.sh b/t/t7060-wtstatus.sh index 5ad2cd1..76b20b2 100755 --- a/t/t7060-wtstatus.sh +++ b/t/t7060-wtstatus.sh @@ -28,4 +28,29 @@ test_expect_success 'Report new path with conflict' ' test_cmp expect actual ' +cat > expect <<EOF +# On branch side +# Unmerged paths: +# (use "git reset HEAD <file>..." to unstage) +# (use "git add <file>..." to mark resolution) +# +# deleted by us : foo +# +no changes added to commit (use "git add" and/or "git commit -a") +EOF + +test_expect_success 'M/D conflict does not segfault' ' + mkdir mdconflict && + cd mdconflict && + git init && + test_commit initial foo '' && + test_commit modify foo foo && + git checkout -b side HEAD^ && + git rm foo && + git commit -m delete && + test_must_fail git merge master && + test_must_fail git status > ../actual && + test_cmp ../expect ../actual +' + test_done -- >8 -- -- Thomas Rast trast@{inf,student}.ethz.ch -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html