Как запустить команды git log, используя libgit2 в GO?
Я заинтересован в запуске команд git log от go. Я вижу, что версия C# имеет поддержку для этого ( https://github.com/libgit2/libgit2sharp/wiki/git-log). Поддерживает ли версия GO аналогичные команды git log? Я быстро выполнил поиск по ключевым словам "запрос" и "фильтр" и ничего не нашел.
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
})
Вы могли бы по крайней мере эмулировать журнал git, используя Commit.Parent
метод, который позволяет получить доступ к родителю коммита (из commit.go
).
Кроме того, я не видел прямого звонка в git log.