我正在开发一个列出 .git 存储库中所有文件的应用程序。我有一种将树变成平面列表的工作方式,但速度很慢(300 毫秒)
这是 Tree 对象的源代码https://github.com/go-git/go-git/blob/master/plumbing/object/tree.go
我的工作解决方案:
repo, err := git.PlainOpen("./repository")
commit, err := repo.CommitObject(ref.Hash())
tree, err := commit.Tree()
var files []string
tree.Files().ForEach(func(f *object.File) error {
files = append(files, f.Name)
return nil
})
return files
但是,如前所述,这需要大约 300 毫秒才能运行。做时git ls-files
需要< 50ms。作为一个从 Go 开始的人,我是否遗漏了一些明显的东西?