2016-05-18 134 views

回答

2

RevWalk是你在找什么。

repo, err := git.OpenRepository("path/to/repository") 
log.Println(err) 

w, err := repo.Walk() // returns a RevWalk instance for this repo 
log.Println(err) 

您可以配置返回的RewWalk实例。

err = w.PushHead() // instruct to start from the head commit 
log.Println(err) 

如果你想登录不同的分支,你可以使用PushRef来代替。还有其他配置选项可以配置日志的起点和终点。查看这些文档。

使用Iterate方法来检查提交列表。您需要传递一个函数,该函数将在列表中的每个提交中调用。

w.Iterate(func(c *git.Commit) bool { 
    fmt.Println(c.Message()) 
    return true // return false when you want to stop iterating 
}) 
1

您至少可以使用Commit.Parent method来模拟git日志,该日志允许访问提交的父级(从commit.go)。

除此之外,我没有看到直接调用git log。