diff options
| author | 2026-03-04 08:26:56 +0800 | |
|---|---|---|
| committer | 2026-03-04 08:59:53 +0800 | |
| commit | ab7501be34032fb9e5c48726a68ae90a917af9eb (patch) | |
| tree | 20d005647569befea8133e953c3270e8fd2a2a5b /repository/tree_resolve.go | |
| parent | *: gofumpt (diff) | |
| signature | No signature | |
*: Lint
Diffstat (limited to 'repository/tree_resolve.go')
| -rw-r--r-- | repository/tree_resolve.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/repository/tree_resolve.go b/repository/tree_resolve.go index 6b7023ba..d4ef529e 100644 --- a/repository/tree_resolve.go +++ b/repository/tree_resolve.go @@ -16,11 +16,13 @@ func (repo *Repository) ResolveTreeEntry(tree *objectstored.StoredTree, parts [] if tree == nil { return object.TreeEntry{}, errors.New("repository: nil root tree") } + if len(parts) == 0 { return object.TreeEntry{}, errors.New("repository: empty tree path") } current := tree + for i, part := range parts { if len(part) == 0 { return object.TreeEntry{}, errors.New("repository: empty tree path segment") @@ -30,9 +32,11 @@ func (repo *Repository) ResolveTreeEntry(tree *objectstored.StoredTree, parts [] if entry == nil { return object.TreeEntry{}, fmt.Errorf("repository: tree entry %q not found", part) } + if i == len(parts)-1 { return *entry, nil } + if entry.Mode != object.FileModeDir { return object.TreeEntry{}, fmt.Errorf("repository: path segment %q is not a tree", part) } @@ -41,6 +45,7 @@ func (repo *Repository) ResolveTreeEntry(tree *objectstored.StoredTree, parts [] if err != nil { return object.TreeEntry{}, err } + current = next } |
