environment: stop storing "core.warnAmbiguousRefs" globally
Same as the preceding commits, storing the "core.warnAmbiguousRefs" value globally is misdesigned as this setting may be set per repository. Move the logic into the repo-settings subsystem. The usual pattern here is that users are expected to call `prepare_repo_settings()` before they access the settings themselves. This seems somewhat fragile though, as it is easy to miss and leads to somewhat ugly code patterns at the call sites. Instead, introduce a new function that encapsulates this logic for us. This also allows us to change how exactly the lazy initialization works in the future, e.g. by only partially initializing values as requested by the caller. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
8e2e8a33f3
commit
11dbb4ace3
@ -20,6 +20,7 @@
|
||||
#include "pretty.h"
|
||||
#include "object-store-ll.h"
|
||||
#include "read-cache-ll.h"
|
||||
#include "repo-settings.h"
|
||||
#include "repository.h"
|
||||
#include "setup.h"
|
||||
#include "midx.h"
|
||||
@ -959,7 +960,7 @@ static int get_oid_basic(struct repository *r, const char *str, int len,
|
||||
int fatal = !(flags & GET_OID_QUIETLY);
|
||||
|
||||
if (len == r->hash_algo->hexsz && !get_oid_hex(str, oid)) {
|
||||
if (warn_ambiguous_refs && warn_on_object_refname_ambiguity) {
|
||||
if (repo_settings_get_warn_ambiguous_refs(r) && warn_on_object_refname_ambiguity) {
|
||||
refs_found = repo_dwim_ref(r, str, len, &tmp_oid, &real_ref, 0);
|
||||
if (refs_found > 0) {
|
||||
warning(warn_msg, len, str);
|
||||
@ -1020,7 +1021,7 @@ static int get_oid_basic(struct repository *r, const char *str, int len,
|
||||
if (!refs_found)
|
||||
return -1;
|
||||
|
||||
if (warn_ambiguous_refs && !(flags & GET_OID_QUIETLY) &&
|
||||
if (repo_settings_get_warn_ambiguous_refs(r) && !(flags & GET_OID_QUIETLY) &&
|
||||
(refs_found > 1 ||
|
||||
!get_short_oid(r, str, len, &tmp_oid, GET_OID_QUIETLY)))
|
||||
warning(warn_msg, len, str);
|
||||
|
Reference in New Issue
Block a user