猿问

如何在 GO 中使用 libgit2 运行 git log 命令?

我有兴趣从 go 运行 git log 命令。我看到 C# 版本对此有支持(https://github.com/libgit2/libgit2sharp/wiki/git-log)。GO 版本是否也支持类似的 git log 命令?我对“查询”和“过滤”关键字进行了一些快速搜索,但没有找到任何东西。


鸿蒙传说
浏览 262回答 2
2回答

慕无忌1623718

RevWalk是您正在寻找的。repo, err := git.OpenRepository("path/to/repository")log.Println(err)w, err := repo.Walk() // returns a RevWalk instance for this repolog.Println(err)您可以配置返回的RewWalk实例。err = w.PushHead() // instruct to start from the head commitlog.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})

烙印99

您至少可以通过使用允许访问提交的父级的Commit.Parent方法来模拟 git log (from commit.go)。除此之外,我没有看到直接调用 git log。
随时随地看视频慕课网APP

相关分类

Go
我要回答