| 212 | } |
| 213 | |
| 214 | static void files_ref_path(struct files_ref_store *refs, |
| 215 | struct strbuf *sb, |
| 216 | const char *refname) |
| 217 | { |
| 218 | const char *bare_refname; |
| 219 | const char *wtname; |
| 220 | int wtname_len; |
| 221 | enum ref_worktree_type wt_type = parse_worktree_ref( |
| 222 | refname, &wtname, &wtname_len, &bare_refname); |
| 223 | switch (wt_type) { |
| 224 | case REF_WORKTREE_CURRENT: |
| 225 | strbuf_addf(sb, "%s/%s", refs->base.gitdir, refname); |
| 226 | break; |
| 227 | case REF_WORKTREE_OTHER: |
| 228 | strbuf_addf(sb, "%s/worktrees/%.*s/%s", refs->gitcommondir, |
| 229 | wtname_len, wtname, bare_refname); |
| 230 | break; |
| 231 | case REF_WORKTREE_SHARED: |
| 232 | case REF_WORKTREE_MAIN: |
| 233 | strbuf_addf(sb, "%s/%s", refs->gitcommondir, bare_refname); |
| 234 | break; |
| 235 | default: |
| 236 | BUG("unknown ref type %d of ref %s", wt_type, refname); |
| 237 | } |
| 238 | } |
| 239 | |
| 240 | /* |
| 241 | * Manually add refs/bisect, refs/rewritten and refs/worktree, which, being |
no test coverage detected