diff options
| author | Justin Tobler <jltobler@gmail.com> | 2025-02-28 15:33:44 -0600 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-03-03 08:17:47 -0800 |
| commit | c8a8e04099a99d6eafbe6e9bb1db3b50996836f8 (patch) | |
| tree | 9d8a641fb75126a6f01e0e4dd01176d781536ebd | |
| parent | diff: return diff_filepair from diff queue helpers (diff) | |
| download | git-c8a8e04099a99d6eafbe6e9bb1db3b50996836f8.tar.gz git-c8a8e04099a99d6eafbe6e9bb1db3b50996836f8.zip | |
diff: add option to skip resolving diff statuses
By default, `diffcore_std()` resolves the statuses for queued diff file
pairs by calling `diff_resolve_rename_copy()`. If status information is
already manually set, invoking `diffcore_std()` may change the status
value.
Introduce the `skip_resolving_statuses` diff option that prevents
`diffcore_std()` from resolving file pair statuses when enabled.
Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | diff.c | 2 | ||||
| -rw-r--r-- | diff.h | 8 |
2 files changed, 9 insertions, 1 deletions
@@ -7085,7 +7085,7 @@ void diffcore_std(struct diff_options *options) diffcore_order(options->orderfile); if (options->rotate_to) diffcore_rotate(options); - if (!options->found_follow) + if (!options->found_follow && !options->skip_resolving_statuses) /* See try_to_follow_renames() in tree-diff.c */ diff_resolve_rename_copy(); diffcore_apply_filter(options); @@ -353,6 +353,14 @@ struct diff_options { /* to support internal diff recursion by --follow hack*/ int found_follow; + /* + * By default, diffcore_std() resolves the statuses for queued diff file + * pairs by calling diff_resolve_rename_copy(). If status information + * has already been manually set, this option prevents diffcore_std() + * from resetting statuses. + */ + int skip_resolving_statuses; + /* Callback which allows tweaking the options in diff_setup_done(). */ void (*set_default)(struct diff_options *); |
