On Tue, 29 Nov 2005, Junio C Hamano wrote: > > I have actually resolved one conflicting merge with this and it > was OK, except that it was a bit unpleasant when I first did > "git-diff-index HEAD" without giving any path ;-), What does "git-diff-files" do? Just output a lot of nasty "unmerged" messages? The _nice_ thing to do would be to output one "unmerged" message, but then diff against stage2 if it exists (and it basically always should, since otherwise we wouldn't have gotten a merge error). If it did that, then you'd have the best of both world: the old nice "git diff" behaviour _and_ being safe (and saying that it's unmerged). Something like this (untested, of course). It _should_ write out * Unmerged path <filename> followed by a regular diff, exactly like you'd want. [ This all assumes that merge-one-file leaves the stages right. I think my patch to do that was just broken. Yours was probably not. ] Linus --- diff --git a/diff-files.c b/diff-files.c index 38599b5..8a78326 100644 --- a/diff-files.c +++ b/diff-files.c @@ -95,11 +95,23 @@ int main(int argc, const char **argv) if (ce_stage(ce)) { show_unmerge(ce->name); - while (i < entries && - !strcmp(ce->name, active_cache[i]->name)) + while (i < entries) { + struct cache_entry *nce = active_cache[i]; + + if (strcmp(ce->name, nce->name)) + break; + /* Prefer to diff against stage 2 (original branch) */ + if (ce_stage(nce) == 2) + ce = nce; i++; - i--; /* compensate for loop control increments */ - continue; + } + /* + * Compensate for loop update + */ + i--; + /* + * Show the diff for the 'ce' we chose + */ } if (lstat(ce->name, &st) < 0) { - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Wed Nov 30 14:14:34 2005
This archive was generated by hypermail 2.1.8 : 2005-11-30 14:14:39 EST