为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

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

})


查看完整回答
反对 回复 2022-01-10
?
烙印99

TA贡献1829条经验 获得超13个赞

您至少可以通过使用允许访问提交的父级的Commit.Parent方法来模拟 git log (from commit.go)。

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


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号