aboutsummaryrefslogtreecommitdiff
path: root/diff.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-09-07 00:54:22 -0700
committerJunio C Hamano <junkio@cox.net>2006-09-07 02:44:41 -0700
commit82793c55e45ea1c7306ff396d8ce316241e584da (patch)
tree7ef779193e20f2831a7f85124f33a6fb23749544 /diff.c
parent2b6eef943ff81df63a809857b7b400ee175eb29b (diff)
downloadgit-82793c55e45ea1c7306ff396d8ce316241e584da.tar.gz
git-82793c55e45ea1c7306ff396d8ce316241e584da.tar.xz
diff --binary generates full index on binary files.
... without --full-index. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'diff.c')
-rw-r--r--diff.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/diff.c b/diff.c
index 9dcbda311..663886570 100644
--- a/diff.c
+++ b/diff.c
@@ -1588,6 +1588,12 @@ static void run_diff(struct diff_filepair *p, struct diff_options *o)
if (hashcmp(one->sha1, two->sha1)) {
int abbrev = o->full_index ? 40 : DEFAULT_ABBREV;
+ if (o->binary) {
+ mmfile_t mf;
+ if ((!fill_mmfile(&mf, one) && mmfile_is_binary(&mf)) ||
+ (!fill_mmfile(&mf, two) && mmfile_is_binary(&mf)))
+ abbrev = 40;
+ }
len += snprintf(msg + len, sizeof(msg) - len,
"index %.*s..%.*s",
abbrev, sha1_to_hex(one->sha1),
@@ -1818,7 +1824,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
options->full_index = 1;
else if (!strcmp(arg, "--binary")) {
options->output_format |= DIFF_FORMAT_PATCH;
- options->full_index = options->binary = 1;
+ options->binary = 1;
}
else if (!strcmp(arg, "-a") || !strcmp(arg, "--text")) {
options->text = 1;