Re: [PATCH 4/5] refs: introduce `refs_for_each_all_refs()`
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 19, 2024, 20:57 UTC
- Message-ID
- <xmqqsf2thwhj.fsf@gitster.g>
- In-Reply-To
- <20240119142705.139374-5-karthik.188@gmail.com>
Karthik Nayak <karthik.188@gmail.com> writes:
Show 34 quoted lines
> +static void add_pseudoref_like_entries(struct ref_store *ref_store,
> + struct ref_dir *dir,
> + const char *dirname)
> +{
> + struct files_ref_store *refs =
> + files_downcast(ref_store, REF_STORE_READ, "fill_ref_dir");
> + struct strbuf path = STRBUF_INIT, refname = STRBUF_INIT;
> + struct dirent *de;
> + size_t dirnamelen;
> + DIR *d;
> +
> + files_ref_path(refs, &path, dirname);
> +
> + d = opendir(path.buf);
> + if (!d) {
> + strbuf_release(&path);
> + return;
> + }
> +
> + strbuf_addstr(&refname, dirname);
> + dirnamelen = refname.len;
> +
> + while ((de = readdir(d)) != NULL) {
> + unsigned char dtype;
> +
> + if (de->d_name[0] == '.')
> + continue;
> + if (ends_with(de->d_name, ".lock"))
> + continue;
> + strbuf_addstr(&refname, de->d_name);
> +
> + dtype = get_dtype(de, &path, 1);
> + if (dtype == DT_REG && is_pseudoref_syntax(de->d_name))
> + loose_fill_ref_dir_regular_file(refs, refname.buf, dir);This looks more like add_pseudoref_entries() given that the general direction is to have an "allow" list of pseudo refs (at this point after the previous step of the series, is_pseudoref_syntax() is the is_pseudoref() function, and uses ends_with("_HEAD") as a mere optimization to avoid listing all the possible pseudo refs that exists or will be added in the future whose name ends with "_HEAD").
Other than the naming, I think these two steps make sense.
Thanks.