提交 de1d81d5 编写于 作者: B brian m. carlson 提交者: Junio C Hamano

diff: specify abbreviation size in terms of the_hash_algo

Instead of using hard-coded 40 constants, refer to the_hash_algo for the
current hash size.
Signed-off-by: Nbrian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 55dc227d
...@@ -3897,13 +3897,14 @@ static void fill_metainfo(struct strbuf *msg, ...@@ -3897,13 +3897,14 @@ static void fill_metainfo(struct strbuf *msg,
*must_show_header = 0; *must_show_header = 0;
} }
if (one && two && oidcmp(&one->oid, &two->oid)) { if (one && two && oidcmp(&one->oid, &two->oid)) {
int abbrev = o->flags.full_index ? 40 : DEFAULT_ABBREV; const unsigned hexsz = the_hash_algo->hexsz;
int abbrev = o->flags.full_index ? hexsz : DEFAULT_ABBREV;
if (o->flags.binary) { if (o->flags.binary) {
mmfile_t mf; mmfile_t mf;
if ((!fill_mmfile(&mf, one) && diff_filespec_is_binary(one)) || if ((!fill_mmfile(&mf, one) && diff_filespec_is_binary(one)) ||
(!fill_mmfile(&mf, two) && diff_filespec_is_binary(two))) (!fill_mmfile(&mf, two) && diff_filespec_is_binary(two)))
abbrev = 40; abbrev = hexsz;
} }
strbuf_addf(msg, "%s%sindex %s..%s", line_prefix, set, strbuf_addf(msg, "%s%sindex %s..%s", line_prefix, set,
diff_abbrev_oid(&one->oid, abbrev), diff_abbrev_oid(&one->oid, abbrev),
...@@ -4138,6 +4139,11 @@ void diff_setup_done(struct diff_options *options) ...@@ -4138,6 +4139,11 @@ void diff_setup_done(struct diff_options *options)
DIFF_FORMAT_NAME_STATUS | DIFF_FORMAT_NAME_STATUS |
DIFF_FORMAT_CHECKDIFF | DIFF_FORMAT_CHECKDIFF |
DIFF_FORMAT_NO_OUTPUT; DIFF_FORMAT_NO_OUTPUT;
/*
* This must be signed because we're comparing against a potentially
* negative value.
*/
const int hexsz = the_hash_algo->hexsz;
if (options->set_default) if (options->set_default)
options->set_default(options); options->set_default(options);
...@@ -4218,8 +4224,8 @@ void diff_setup_done(struct diff_options *options) ...@@ -4218,8 +4224,8 @@ void diff_setup_done(struct diff_options *options)
*/ */
read_cache(); read_cache();
} }
if (40 < options->abbrev) if (hexsz < options->abbrev)
options->abbrev = 40; /* full */ options->abbrev = hexsz; /* full */
/* /*
* It does not make sense to show the first hit we happened * It does not make sense to show the first hit we happened
...@@ -4797,8 +4803,8 @@ int diff_opt_parse(struct diff_options *options, ...@@ -4797,8 +4803,8 @@ int diff_opt_parse(struct diff_options *options,
options->abbrev = strtoul(arg, NULL, 10); options->abbrev = strtoul(arg, NULL, 10);
if (options->abbrev < MINIMUM_ABBREV) if (options->abbrev < MINIMUM_ABBREV)
options->abbrev = MINIMUM_ABBREV; options->abbrev = MINIMUM_ABBREV;
else if (40 < options->abbrev) else if (the_hash_algo->hexsz < options->abbrev)
options->abbrev = 40; options->abbrev = the_hash_algo->hexsz;
} }
else if ((argcount = parse_long_opt("src-prefix", av, &optarg))) { else if ((argcount = parse_long_opt("src-prefix", av, &optarg))) {
options->a_prefix = optarg; options->a_prefix = optarg;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册