diff options
author | Patrick Steinhardt <ps@pks.im> | 2022-11-17 06:46:43 +0100 |
---|---|---|
committer | Taylor Blau <me@ttaylorr.com> | 2022-11-17 22:22:51 +0100 |
commit | 9b67eb6fbeb9666640f34cccf401cfea22f7bd22 (patch) | |
tree | 0e621cf74bf789927c02e3ec70c95fc1ff8af217 /refs.h | |
parent | refs: fix memory leak when parsing hideRefs config (diff) | |
download | git-9b67eb6fbeb9666640f34cccf401cfea22f7bd22.tar.xz git-9b67eb6fbeb9666640f34cccf401cfea22f7bd22.zip |
refs: get rid of global list of hidden refs
We're about to add a new argument to git-rev-list(1) that allows it to
add all references that are visible when taking `transfer.hideRefs` et
al into account. This will require us to potentially parse multiple sets
of hidden refs, which is not easily possible right now as there is only
a single, global instance of the list of parsed hidden refs.
Refactor `parse_hide_refs_config()` and `ref_is_hidden()` so that both
take the list of hidden references as input and adjust callers to keep a
local list, instead. This allows us to easily use multiple hidden-ref
lists. Furthermore, it allows us to properly free this list before we
exit.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Diffstat (limited to 'refs.h')
-rw-r--r-- | refs.h | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -808,7 +808,8 @@ int update_ref(const char *msg, const char *refname, const struct object_id *new_oid, const struct object_id *old_oid, unsigned int flags, enum action_on_err onerr); -int parse_hide_refs_config(const char *var, const char *value, const char *); +int parse_hide_refs_config(const char *var, const char *value, const char *, + struct string_list *); /* * Check whether a ref is hidden. If no namespace is set, both the first and @@ -818,7 +819,7 @@ int parse_hide_refs_config(const char *var, const char *value, const char *); * the ref is outside that namespace, the first parameter is NULL. The second * parameter always points to the full ref name. */ -int ref_is_hidden(const char *, const char *); +int ref_is_hidden(const char *, const char *, const struct string_list *); /* Is this a per-worktree ref living in the refs/ namespace? */ int is_per_worktree_ref(const char *refname); |