]> git.ipfire.org Git - thirdparty/git.git/commit
refs: unify parse_worktree_ref() and ref_type()
authorHan-Wen Nienhuys <hanwen@google.com>
Mon, 19 Sep 2022 16:34:50 +0000 (16:34 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 19 Sep 2022 18:11:11 +0000 (11:11 -0700)
commit71e5473493612f74244e2fa7a257a868df98be53
treed749311ef5041031f8a5c569a680837d862990f8
parentd3fa443f97e3a8d75b51341e2d5bac380b7422df
refs: unify parse_worktree_ref() and ref_type()

The logic to handle worktree refs (worktrees/NAME/REF and
main-worktree/REF) existed in two places:

* ref_type() in refs.c

* parse_worktree_ref() in worktree.c

Collapse this logic together in one function parse_worktree_ref():
this avoids having to cross-check the result of parse_worktree_ref()
and ref_type().

Introduce enum ref_worktree_type, which is slightly different from
enum ref_type. The latter is a misleading name (one would think that
'ref_type' would have the symref option).

Instead, enum ref_worktree_type only makes explicit how a refname
relates to a worktree. From this point of view, HEAD and
refs/bisect/abc are the same: they specify the current worktree
implicitly.

The files-backend must avoid packing refs/bisect/* and friends into
packed-refs, so expose is_per_worktree_ref() separately.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/reflog.c
reflog.c
refs.c
refs.h
refs/files-backend.c
refs/packed-backend.c
worktree.c
worktree.h