[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 <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
maint
Junio C Hamano 2005-04-16 21:29:45 -07:00 committed by Linus Torvalds
parent d2522a6528
commit 9fec8b26ef
1 changed files with 13 additions and 0 deletions

View File

@ -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;