From: Patrick Steinhardt Date: Tue, 17 Feb 2026 07:24:15 GMT Subject: Re: [PATCH v6 3/6] refs: receive and use the reference storage payload Message-ID: In-Reply-To: <20260214-kn-alternate-ref-dir-v6-3-86a82c77cf59@gmail.com> On Sat, Feb 14, 2026 at 11:34:16PM +0100, Karthik Nayak wrote: > diff --git a/refs.c b/refs.c > index 77b93d655b..11d028232b 100644 > --- a/refs.c > +++ b/refs.c > @@ -3425,3 +3426,40 @@ const char *ref_transaction_error_msg(enum ref_transaction_error err) > return "unknown failure"; > } > } > + > +void refs_compute_filesystem_location(const char *gitdir, const char *payload, > + bool *is_worktree, struct strbuf *refdir, > + struct strbuf *ref_common_dir) > +{ > + struct strbuf sb = STRBUF_INIT; > + > + *is_worktree = get_common_dir_noenv(ref_common_dir, gitdir); > + > + if (!payload) { > + /* > + * We can use the 'gitdir' as the 'refdir' without appending the > + * worktree path, as the 'gitdir' here is already the worktree > + * path and is different from 'commondir' denoted by 'ref_common_dir'. > + */ > + strbuf_addstr(refdir, gitdir); > + return; > + } > + > + if (!is_absolute_path(payload)) { > + strbuf_addf(&sb, "%s/%s", ref_common_dir->buf, payload); > + strbuf_realpath(ref_common_dir, sb.buf, 1); > + } else { > + strbuf_realpath(ref_common_dir, payload, 1); > + } > + > + strbuf_addbuf(refdir, ref_common_dir); > + > + if (*is_worktree) { > + const char *wt_id = strrchr(gitdir, '/'); > + if (!wt_id) > + BUG("worktree path does not contain slash "); There's a trailing space in the error message here. Patrick