diff options
| author | 2026-03-26 09:19:01 +0000 | |
|---|---|---|
| committer | 2026-03-26 09:19:01 +0000 | |
| commit | 929b8cc620abca70b3444b09be5249f6c6cb7812 (patch) | |
| tree | 29b1edba8f597d09a2a51a6b2c901389cc40e242 /ref/refname/worktree.go | |
| parent | format: Move commitgraph and packfile here (diff) | |
| signature | No signature | |
ref/name: Rename from ref/refname
Diffstat (limited to 'ref/refname/worktree.go')
| -rw-r--r-- | ref/refname/worktree.go | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/ref/refname/worktree.go b/ref/refname/worktree.go deleted file mode 100644 index 48ca215d..00000000 --- a/ref/refname/worktree.go +++ /dev/null @@ -1,75 +0,0 @@ -package refname - -import "strings" - -// WorktreeType classifies one worktree-qualified refname prefix. -type WorktreeType uint8 - -const ( - // WorktreeShared is one ordinary shared refname. - WorktreeShared WorktreeType = iota - - // WorktreeCurrent is one current-worktree-only refname like HEAD or refs/worktree/... - WorktreeCurrent - - // WorktreeMain is one main-worktree-qualified refname like main-worktree/HEAD. - WorktreeMain - - // WorktreeOther is one other-worktree-qualified refname like worktrees/wt1/HEAD. - WorktreeOther -) - -// IsPerWorktree reports whether name is one per-worktree ref namespace. -func IsPerWorktree(name string) bool { - return strings.HasPrefix(name, "refs/worktree/") || - strings.HasPrefix(name, "refs/bisect/") || - strings.HasPrefix(name, "refs/rewritten/") -} - -// ParsedWorktreeRef is the result of parsing one worktree-qualified refname. -type ParsedWorktreeRef struct { - Type WorktreeType - WorktreeName string - BareRefName string -} - -// ParseWorktree parses Git's worktree ref prefixes. -func ParseWorktree(name string) ParsedWorktreeRef { - if bare, ok := strings.CutPrefix(name, "worktrees/"); ok { - worktreeName, rest, found := strings.Cut(bare, "/") - if !found { - return ParsedWorktreeRef{ - Type: WorktreeOther, - WorktreeName: worktreeName, - BareRefName: "", - } - } - - if isCurrentWorktreeRef(rest) { - return ParsedWorktreeRef{ - Type: WorktreeOther, - WorktreeName: worktreeName, - BareRefName: rest, - } - } - } - - if bare, ok := strings.CutPrefix(name, "main-worktree/"); ok && isCurrentWorktreeRef(bare) { - return ParsedWorktreeRef{ - Type: WorktreeMain, - BareRefName: bare, - } - } - - if isCurrentWorktreeRef(name) { - return ParsedWorktreeRef{ - Type: WorktreeCurrent, - BareRefName: name, - } - } - - return ParsedWorktreeRef{ - Type: WorktreeShared, - BareRefName: name, - } -} |
