gpt4 book ai didi

go - 使用go-git获得平面文件列表

转载 作者:行者123 更新时间:2023-12-01 21:12:25 25 4
gpt4 key购买 nike

我正在开发一个列出.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的人,我是否缺少明显的东西?

最佳答案

我认为tree.Files()速度很慢,因为它检索树(和子树)中列出的每个blob。如果您要获取的只是每个Blob的路径(即文件名),则最好使用NewTreeWalker而不是仅获取每个条目的名称。

关于go - 使用go-git获得平面文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63591370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com