首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用go-git获取文件的平面列表。

使用go-git获取文件的平面列表。
EN

Stack Overflow用户
提问于 2020-08-26 06:02:57
回答 1查看 1.2K关注 0票数 2

我正在开发一个应用程序,它列出了.git存储库中的所有文件。我有一种方法可以把一棵树变成一个扁平的列表,但是它非常慢(300 is )。

这是树对象https://github.com/go-git/go-git/blob/master/plumbing/object/tree.go的源代码

我的工作解决方案:

代码语言:javascript
复制
    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 as才能运行。在执行git ls-files时,需要小于50。作为一个从Go开始的人,我是不是遗漏了一些显而易见的东西?

EN

回答 1

Stack Overflow用户

发布于 2020-08-26 15:42:26

我认为tree.Files()很慢,因为它检索树(和子树)中列出的每个blob。如果您只想获得每个blob的路径(即文件名),那么最好使用NewTreeWalker来获取每个条目的名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63591370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档