gpt4 book ai didi

git2go : Listing files with the latest committer and commit date

转载 作者:IT王子 更新时间:2023-10-29 02:22:14 25 4
gpt4 key购买 nike

我正在尝试使用 git2go 输出文件列表,以及它们在存储库中的最新作者和最近提交日期。使用 tree.Walk 循环访问文件似乎很简单:

package main

import (
"time"

"gopkg.in/libgit2/git2go.v25"
)

// FileItem contains enough file information to build list
type FileItem struct {
AbsoluteFilename string `json:"absolute_filename"`
Filename string `json:"filename"`
Path string `json:"path"`
Author string `json:"author"`
Time time.Time `json:"updated_at"`
}

func check(err error) {
// ...
}

func getFiles(path string) (files []FileItem) {

repository, err := git.OpenRepository(path)
check(err)

head, err := repository.Head()
check(err)

headCommit, err := repository.LookupCommit(head.Target())
check(err)

tree, err := headCommit.Tree()
check(err)

err = tree.Walk(func(td string, te *git.TreeEntry) int {

if te.Type == git.ObjectBlob {

files = append(files, FileItem{
Filename: te.Name,
Path: td,
Author: "Joey", // should be last committer
Time: time.Now(), // should be last commit time

})

}
return 0
})
check(err)

return
}

我无法解决的问题是,我应该采用哪种方法?我可以在传递给 tree.Walk 的函数中,根据 git.TreeEntry 的有限信息计算提交吗?或者我是否需要单独构建一个提交列表以及相关文件并以某种方式交叉引用它们?

最佳答案

log example显示如何按路径过滤 revwalk。它涉及将每个提交与它的父项进行比较,并将路径作为 pathspec 参数。这不是微不足道的。

关于git2go : Listing files with the latest committer and commit date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42564667/

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