diff-files: mark an index entry we know is up-to-date as such
authorJunio C Hamano <gitster@pobox.com>
Sun, 30 Mar 2008 19:39:25 +0000 (12:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 13 Apr 2008 02:42:17 +0000 (19:42 -0700)
This does not make any difference when running diff-files alone, but if
you internally run run_diff_files() and then run other operations further
on the index, we do not have to run lstat(2) again on entries we already
have checked.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff-lib.c

index 069e4507ae7caa70f79d5369bc61dfefd0f174e2..6e7ab29e343bd0aab10c54d5194527c233fa9e23 100644 (file)
@@ -476,8 +476,11 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
                        continue;
                }
                changed = ce_match_stat(ce, &st, ce_option);
-               if (!changed && !DIFF_OPT_TST(&revs->diffopt, FIND_COPIES_HARDER))
-                       continue;
+               if (!changed) {
+                       ce_mark_uptodate(ce);
+                       if (!DIFF_OPT_TST(&revs->diffopt, FIND_COPIES_HARDER))
+                               continue;
+               }
                oldmode = ce->ce_mode;
                newmode = ce_mode_from_stat(ce, st.st_mode);
                diff_change(&revs->diffopt, oldmode, newmode,