git2go: Listado de files con el último committer y date de compromiso

Estoy intentando usar git2go para generar una list de files, junto con su último autor y la date de confirmación más reciente en un repository. Looping a través de los files con tree.Walk parece ser sencillo:

 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 } 

Lo que no puedo resolver es, ¿qué enfoque debo tomar? ¿Puedo, dentro de la function, pasar a tree.Walk , calcular la confirmación basada en la información limitada de git.TreeEntry ? ¿O necesito build por separado una list de confirmaciones junto con los files asociados y de alguna manera hacer una reference cruzada entre ellos?

El ejemplo de logging muestra cómo filtrar revwalk por ruta. Implica diferir cada compromiso a su padre con la ruta como un argumento de ruta de acceso. No es trivial.