|
package main
import (
"fmt"
"log"
"github.com/libgit2/git2go"
)
func main() {
repo, err := git.OpenRepository("/home/lu/t/libgit2")
if err != nil {
log.Fatal("opening repository: ", err)
}
head, err := repo.Head()
if err != nil {
log.Fatal("getting HEAD: ", err)
}
commit, err := repo.LookupCommit(head.Target())
if err != nil {
log.Fatal("resolving HEAD: ", err)
}
fmt.Printf("Commit: %s\nAuthor: %s\nDate: %s\n\n%s", commit.TreeId(), commit.Author().Name, commit.Author().When, commit.Message())
tree, err := commit.Tree()
if err != nil {
log.Fatal("getting tree: ", err)
}
err = tree.Walk(func(name string, entry *git.TreeEntry) int {
obj, err := repo.Lookup(entry.Id)
if err != nil {
log.Fatal("lookup: ", err)
}
fmt.Printf("%s (%s)\n", entry.Name, obj.Type())
return 1
})
if err != nil {
log.Fatal("walking tree: ", err)
}
}
|