summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--diff-lib.c7
-rw-r--r--read-cache.c2
2 files changed, 6 insertions, 3 deletions
diff --git a/diff-lib.c b/diff-lib.c
index cfd629da48..9139e45fb9 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -479,8 +479,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,
diff --git a/read-cache.c b/read-cache.c
index a92b25b59b..c3692f41ad 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1370,7 +1370,7 @@ int write_index(const struct index_state *istate, int newfd)
struct cache_entry *ce = cache[i];
if (ce->ce_flags & CE_REMOVE)
continue;
- if (is_racy_timestamp(istate, ce))
+ if (!ce_uptodate(ce) && is_racy_timestamp(istate, ce))
ce_smudge_racily_clean_entry(ce);
if (ce_write_entry(&c, newfd, ce) < 0)
return -1;