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