diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-06-28 22:56:07 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-06-30 20:51:31 -0700 |
commit | 706098af6b53403b5ea3db9216fb99afbe06f52d (patch) | |
tree | d433db47ca354e5de3c229066e96c413ab33a976 | |
parent | d8c3d03a0b7f10977dd508a5a965a417b7f1b065 (diff) | |
download | git-706098af6b53403b5ea3db9216fb99afbe06f52d.tar.gz git-706098af6b53403b5ea3db9216fb99afbe06f52d.tar.xz |
diffcore_filespec: add is_binary
diffcore-break and diffcore-rename would want to behave slightly
differently depending on the binary-ness of the data, so add one
bit to the filespec, as the structure is now passed down to
diffcore_count_changes() function.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | diff.c | 16 | ||||
-rw-r--r-- | diffcore.h | 1 |
2 files changed, 17 insertions, 0 deletions
@@ -3005,6 +3005,22 @@ void diffcore_std(struct diff_options *options) { if (options->quiet) return; + + /* + * break/rename count similarity differently depending on + * the binary-ness. + */ + if ((options->break_opt != -1) || (options->detect_rename)) { + struct diff_queue_struct *q = &diff_queued_diff; + int i; + + for (i = 0; i < q->nr; i++) { + struct diff_filepair *p = q->queue[i]; + p->one->is_binary = file_is_binary(p->one); + p->two->is_binary = file_is_binary(p->two); + } + } + if (options->break_opt != -1) diffcore_break(options->break_opt); if (options->detect_rename) diff --git a/diffcore.h b/diffcore.h index 990dec50f..0c8abb5b9 100644 --- a/diffcore.h +++ b/diffcore.h @@ -37,6 +37,7 @@ struct diff_filespec { #define DIFF_FILE_VALID(spec) (((spec)->mode) != 0) unsigned should_free : 1; /* data should be free()'ed */ unsigned should_munmap : 1; /* data should be munmap()'ed */ + unsigned is_binary : 1; /* data should be considered "binary" */ }; extern struct diff_filespec *alloc_filespec(const char *); |