environment: stop storing "core.notesRef" globally
Stop storing the "core.notesRef" config value globally. Instead, retrieve the value in `default_notes_ref()`. The code is never called in a hot loop anyway, so doing this on every invocation should be perfectly fine. 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
11dbb4ace3
commit
1e7e4a111f
21
notes.c
21
notes.c
@ -992,15 +992,16 @@ static int notes_display_config(const char *k, const char *v,
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *default_notes_ref(void)
|
||||
char *default_notes_ref(struct repository *repo)
|
||||
{
|
||||
const char *notes_ref = NULL;
|
||||
char *notes_ref = NULL;
|
||||
|
||||
if (!notes_ref)
|
||||
notes_ref = getenv(GIT_NOTES_REF_ENVIRONMENT);
|
||||
notes_ref = xstrdup_or_null(getenv(GIT_NOTES_REF_ENVIRONMENT));
|
||||
if (!notes_ref)
|
||||
notes_ref = notes_ref_name; /* value of core.notesRef config */
|
||||
repo_config_get_string(repo, "core.notesref", ¬es_ref);
|
||||
if (!notes_ref)
|
||||
notes_ref = GIT_NOTES_DEFAULT_REF;
|
||||
notes_ref = xstrdup(GIT_NOTES_DEFAULT_REF);
|
||||
return notes_ref;
|
||||
}
|
||||
|
||||
@ -1010,13 +1011,14 @@ void init_notes(struct notes_tree *t, const char *notes_ref,
|
||||
struct object_id oid, object_oid;
|
||||
unsigned short mode;
|
||||
struct leaf_node root_tree;
|
||||
char *to_free = NULL;
|
||||
|
||||
if (!t)
|
||||
t = &default_notes_tree;
|
||||
assert(!t->initialized);
|
||||
|
||||
if (!notes_ref)
|
||||
notes_ref = default_notes_ref();
|
||||
notes_ref = to_free = default_notes_ref(the_repository);
|
||||
update_ref_namespace(NAMESPACE_NOTES, xstrdup(notes_ref));
|
||||
|
||||
if (!combine_notes)
|
||||
@ -1033,7 +1035,7 @@ void init_notes(struct notes_tree *t, const char *notes_ref,
|
||||
|
||||
if (flags & NOTES_INIT_EMPTY ||
|
||||
repo_get_oid_treeish(the_repository, notes_ref, &object_oid))
|
||||
return;
|
||||
goto out;
|
||||
if (flags & NOTES_INIT_WRITABLE && refs_read_ref(get_main_ref_store(the_repository), notes_ref, &object_oid))
|
||||
die("Cannot use notes ref %s", notes_ref);
|
||||
if (get_tree_entry(the_repository, &object_oid, "", &oid, &mode))
|
||||
@ -1043,6 +1045,9 @@ void init_notes(struct notes_tree *t, const char *notes_ref,
|
||||
oidclr(&root_tree.key_oid, the_repository->hash_algo);
|
||||
oidcpy(&root_tree.val_oid, &oid);
|
||||
load_subtree(t, &root_tree, t->root, 0);
|
||||
|
||||
out:
|
||||
free(to_free);
|
||||
}
|
||||
|
||||
struct notes_tree **load_notes_trees(struct string_list *refs, int flags)
|
||||
@ -1105,7 +1110,7 @@ void load_display_notes(struct display_notes_opt *opt)
|
||||
|
||||
if (!opt || opt->use_default_notes > 0 ||
|
||||
(opt->use_default_notes == -1 && !opt->extra_notes_refs.nr)) {
|
||||
string_list_append(&display_notes_refs, default_notes_ref());
|
||||
string_list_append_nodup(&display_notes_refs, default_notes_ref(the_repository));
|
||||
display_ref_env = getenv(GIT_NOTES_DISPLAY_REF_ENVIRONMENT);
|
||||
if (display_ref_env) {
|
||||
string_list_add_refs_from_colon_sep(&display_notes_refs,
|
||||
|
Reference in New Issue
Block a user