gitech

Форк
0
/
tree_blob_nogogit.go 
49 строк · 990.0 Байт
1
// Copyright 2020 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
//go:build !gogit
5

6
package git
7

8
import (
9
	"path"
10
	"strings"
11
)
12

13
// GetTreeEntryByPath get the tree entries according the sub dir
14
func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error) {
15
	if len(relpath) == 0 {
16
		return &TreeEntry{
17
			ptree:     t,
18
			ID:        t.ID,
19
			name:      "",
20
			fullName:  "",
21
			entryMode: EntryModeTree,
22
		}, nil
23
	}
24

25
	// FIXME: This should probably use git cat-file --batch to be a bit more efficient
26
	relpath = path.Clean(relpath)
27
	parts := strings.Split(relpath, "/")
28
	var err error
29
	tree := t
30
	for i, name := range parts {
31
		if i == len(parts)-1 {
32
			entries, err := tree.ListEntries()
33
			if err != nil {
34
				return nil, err
35
			}
36
			for _, v := range entries {
37
				if v.Name() == name {
38
					return v, nil
39
				}
40
			}
41
		} else {
42
			tree, err = tree.SubTree(name)
43
			if err != nil {
44
				return nil, err
45
			}
46
		}
47
	}
48
	return nil, ErrNotExist{"", relpath}
49
}
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.