This is a resurection of an old patch serie by Diane Gasselin: http://thread.gmane.org/gmane.comp.version-control.git/149173/focus=149186 In short, when you have several untracked files that conflict with a merge or checkout, Git currently reports just the first. After this patch serie, it reports things like: error: Your local changes to the following files would be overwritten by checkout: rep/two rep/one Please, commit your changes or stash them before you can switch branches. most of the job is done by "unpack_trees: group error messages by type", but this needed a bit of preparation to be implementable cleanly. Compared to previous version, there are many small cleanups, and: * unpack_trees_options was a struct, it's now an array. This makes the code much cleaner whenever one tries to do clever things with it. That's patch "Turn unpack_trees_options.msgs into an array + enum". * A message was previously a type + an action ("removed" or "overwritten"). The type now encompasses the action. This duplicates a few lines in the declaration of the error messages, but again makes the rest of the code much simpler. That's patch "merge-recursive: distinguish "removed" and "overwritten" messages" * The info on whether traverse_trees should stop at the first error was stored in info->data, with a very fragile cast to (unpack_trees_options *). I added one more field in the info structure to get rid of this cast. Diane Gasselin (2): merge-recursive: porcelain messages for checkout t7609: test merge and checkout error messages Matthieu Moy (3): Turn unpack_trees_options.msgs into an array + enum merge-recursive: distinguish "removed" and "overwritten" messages unpack_trees: group error messages by type Documentation/technical/api-tree-walking.txt | 2 + builtin/checkout.c | 3 +- builtin/merge.c | 3 +- merge-recursive.c | 62 +++++++---- merge-recursive.h | 7 +- t/t3030-merge-recursive.sh | 2 +- t/t3400-rebase.sh | 3 +- t/t3404-rebase-interactive.sh | 3 +- t/t7609-merge-co-error-msgs.sh | 125 ++++++++++++++++++++++ tree-walk.c | 11 ++- tree-walk.h | 1 + unpack-trees.c | 148 ++++++++++++++++++++------ unpack-trees.h | 34 ++++-- 13 files changed, 332 insertions(+), 72 deletions(-) create mode 100755 t/t7609-merge-co-error-msgs.sh -- 1.7.2.1.52.g95e25.dirty -- 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