From 9fec8b26eff58e1f595e8619abf1e42c07645ff8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 16 Apr 2005 21:29:45 -0700 Subject: [PATCH] [PATCH] Do not run useless show-diff on unmerged paths repeatedly. When run on unmerged dircache, show-diff compares the working file with each non-empty stage for that path. Two out of three times, this is not very helpful. This patch makes it report the unmergedness only once per each path and avoids running the actual diff. Upper layer SCMs like Cogito are expected to find out mode/SHA1 for each stage by using "show-files --stage" and run the diff itself. This would result in more sensible diffs. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- show-diff.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/show-diff.c b/show-diff.c index 1f903af02..0af2f1051 100644 --- a/show-diff.c +++ b/show-diff.c @@ -167,6 +167,19 @@ int main(int argc, char **argv) ! matches_pathspec(ce, argv+1, argc-1)) continue; + if (ce_stage(ce)) { + if (machine_readable) + printf("U %s%c", ce->name, 0); + else + printf("%s: Unmerged\n", + ce->name); + while (i < entries && + !strcmp(ce->name, active_cache[i]->name)) + i++; + i--; /* compensate for loop control increments */ + continue; + } + if (stat(ce->name, &st) < 0) { if (errno == ENOENT && silent_on_nonexisting_files) continue; -- 2.30.2