aboutsummaryrefslogtreecommitdiff
path: root/diff-lib.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-12-16 10:22:56 +0900
committerJunio C Hamano <gitster@pobox.com>2025-12-16 10:22:56 +0900
commitc0c4dc0b700f0f97cbe7a06ab555cd6912dc924c (patch)
tree5005b815e45118299eb1e03903bffce6a4241424 /diff-lib.c
parent9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed (diff)
parent38f88051dae6ddb2f1cdb9c7415d4ba6caef04af (diff)
downloadgit-c0c4dc0b700f0f97cbe7a06ab555cd6912dc924c.tar.xz
Merge branch 'rs/diff-index-find-copies-harder-optim' into rs/diff-files-r-find-copies-fix
* rs/diff-index-find-copies-harder-optim: diff-index: don't queue unchanged filepairs with diff_change()
Diffstat (limited to 'diff-lib.c')
-rw-r--r--diff-lib.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/diff-lib.c b/diff-lib.c
index b8f8f3bc31..8e624f38c6 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -418,13 +418,12 @@ static int show_modified(struct rev_info *revs,
}
oldmode = old_entry->ce_mode;
- if (mode == oldmode && oideq(oid, &old_entry->oid) && !dirty_submodule &&
- !revs->diffopt.flags.find_copies_harder)
- return 0;
-
- diff_change(&revs->diffopt, oldmode, mode,
- &old_entry->oid, oid, 1, !is_null_oid(oid),
- old_entry->name, 0, dirty_submodule);
+ if (mode != oldmode || !oideq(oid, &old_entry->oid) || dirty_submodule)
+ diff_change(&revs->diffopt, oldmode, mode,
+ &old_entry->oid, oid, 1, !is_null_oid(oid),
+ old_entry->name, 0, dirty_submodule);
+ else if (revs->diffopt.flags.find_copies_harder)
+ diff_same(&revs->diffopt, mode, oid, old_entry->name);
return 0;
}