diff options
author | 6543 <6543@obermui.de> | 2021-07-20 15:16:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-20 15:16:20 +0200 |
commit | b26c3b482feb57704aa399d8d72a959ce667b879 (patch) | |
tree | 1984bacf320a1d4b8516807d5afe138d8842dd7e /modules | |
parent | 263577842563a8a692212f897bec685751c78f23 (diff) | |
download | gitea-b26c3b482feb57704aa399d8d72a959ce667b879.tar.gz gitea-b26c3b482feb57704aa399d8d72a959ce667b879.zip |
Add TestPrepareWikiFileName (#16487)
* Add TestPrepareWikiFileName
* use LsTree as LsFiles is index only
* ajust other tests
Co-authored-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/git/tree.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/modules/git/tree.go b/modules/git/tree.go index 059f0a8287..3671f421e9 100644 --- a/modules/git/tree.go +++ b/modules/git/tree.go @@ -6,6 +6,7 @@ package git import ( + "bytes" "strings" ) @@ -45,3 +46,23 @@ func (t *Tree) SubTree(rpath string) (*Tree, error) { } return g, nil } + +// LsTree checks if the given filenames are in the tree +func (repo *Repository) LsTree(ref string, filenames ...string) ([]string, error) { + cmd := NewCommand("ls-tree", "-z", "--name-only", "--", ref) + for _, arg := range filenames { + if arg != "" { + cmd.AddArguments(arg) + } + } + res, err := cmd.RunInDirBytes(repo.Path) + if err != nil { + return nil, err + } + filelist := make([]string, 0, len(filenames)) + for _, line := range bytes.Split(res, []byte{'\000'}) { + filelist = append(filelist, string(line)) + } + + return filelist, err +} |