1
我試圖使用git2go在存儲庫中輸出文件列表及其最新作者和最近提交日期。通過與tree.Walk
文件循環似乎是直截了當:git2go:使用最新的提交者和提交日期列出文件
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
的有限信息計算出提交嗎?或者我需要單獨構建提交列表以及相關文件,並以某種方式交叉引用它們?
revwalk help? [走路歷史](http://ben.straub.cc/2013/10/02/revwalk/) – Mark
Mark看起來很有希望,我會在早上適當調查 –