2016-05-18 4 views
3

Меня интересует запуск команд git log из go. Я вижу, что версия C# имеет поддержку для этого (https://github.com/libgit2/libgit2sharp/wiki/git-log). Поддерживает ли GO version аналогичные команды журнала git? Я сделал быстрый поиск ключевых слов «запрос» и «фильтр», и я ничего не нашел.Как запустить команды git log с помощью libgit2 в GO?

ответ

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.