Merge branch 'ps/undecided-is-not-necessarily-sha1' into jc/undecided-is-not-necessarily-sha1-fix
* ps/undecided-is-not-necessarily-sha1: repository: stop setting SHA1 as the default object hash oss-fuzz/commit-graph: set up hash algorithm builtin/shortlog: don't set up revisions without repo builtin/diff: explicitly set hash algo when there is no repo builtin/bundle: abort "verify" early when there is no repository builtin/blame: don't access potentially unitialized `the_hash_algo` builtin/rev-parse: allow shortening to more than 40 hex characters remote-curl: fix parsing of detached SHA256 heads attr: fix BUG() when parsing attrs outside of repo attr: don't recompute default attribute source parse-options-cb: only abbreviate hashes when hash algo is known path: move `validate_headref()` to its only user path: harden validation of HEAD with non-standard hashes
This commit is contained in:
@ -915,7 +915,6 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
|
||||
struct range_set ranges;
|
||||
unsigned int range_i;
|
||||
long anchor;
|
||||
const int hexsz = the_hash_algo->hexsz;
|
||||
long num_lines = 0;
|
||||
const char *str_usage = cmd_is_annotate ? annotate_usage : blame_usage;
|
||||
const char **opt_usage = cmd_is_annotate ? annotate_opt_usage : blame_opt_usage;
|
||||
@ -973,11 +972,11 @@ parse_done:
|
||||
} else if (show_progress < 0)
|
||||
show_progress = isatty(2);
|
||||
|
||||
if (0 < abbrev && abbrev < hexsz)
|
||||
if (0 < abbrev && abbrev < (int)the_hash_algo->hexsz)
|
||||
/* one more abbrev length is needed for the boundary commit */
|
||||
abbrev++;
|
||||
else if (!abbrev)
|
||||
abbrev = hexsz;
|
||||
abbrev = the_hash_algo->hexsz;
|
||||
|
||||
if (revs_file && read_ancestry(revs_file))
|
||||
die_errno("reading graft file '%s' failed", revs_file);
|
||||
|
@ -140,6 +140,11 @@ static int cmd_bundle_verify(int argc, const char **argv, const char *prefix) {
|
||||
builtin_bundle_verify_usage, options, &bundle_file);
|
||||
/* bundle internals use argv[1] as further parameters */
|
||||
|
||||
if (!startup_info->have_repository) {
|
||||
ret = error(_("need a repository to verify a bundle"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((bundle_fd = open_bundle(bundle_file, &header, &name)) < 0) {
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
|
@ -465,6 +465,15 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
|
||||
no_index = DIFF_NO_INDEX_IMPLICIT;
|
||||
}
|
||||
|
||||
/*
|
||||
* When operating outside of a Git repository we need to have a hash
|
||||
* algorithm at hand so that we can generate the blob hashes. We
|
||||
* default to SHA1 here, but may eventually want to change this to be
|
||||
* configurable via a command line option.
|
||||
*/
|
||||
if (nongit)
|
||||
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
||||
|
||||
init_diff_ui_defaults();
|
||||
git_config(git_diff_ui_config, NULL);
|
||||
prefix = precompose_argv_prefix(argc, argv, prefix);
|
||||
|
@ -687,7 +687,6 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
const char *name = NULL;
|
||||
struct object_context unused;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const int hexsz = the_hash_algo->hexsz;
|
||||
int seen_end_of_options = 0;
|
||||
enum format_type format = FORMAT_DEFAULT;
|
||||
|
||||
@ -863,8 +862,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
abbrev = strtoul(arg, NULL, 10);
|
||||
if (abbrev < MINIMUM_ABBREV)
|
||||
abbrev = MINIMUM_ABBREV;
|
||||
else if (hexsz <= abbrev)
|
||||
abbrev = hexsz;
|
||||
else if ((int)the_hash_algo->hexsz <= abbrev)
|
||||
abbrev = the_hash_algo->hexsz;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--sq")) {
|
||||
|
@ -435,7 +435,7 @@ parse_done:
|
||||
usage_with_options(shortlog_usage, options);
|
||||
}
|
||||
|
||||
if (setup_revisions(argc, argv, &rev, NULL) != 1) {
|
||||
if (!nongit && setup_revisions(argc, argv, &rev, NULL) != 1) {
|
||||
error(_("unrecognized argument: %s"), argv[1]);
|
||||
usage_with_options(shortlog_usage, options);
|
||||
}
|
||||
|
Reference in New Issue
Block a user