/ / Jak uruchomić polecenie git log za pomocą libgit2 w GO? - git, go, libgit2

Jak uruchomić polecenie git log za pomocą libgit2 w GO? - git, go, libgit2

Interesuje mnie uruchamianie poleceń log git z go. Widzę, że wersja C # ma wsparcie dla tego (https://github.com/libgit2/libgit2sharp/wiki/git-log). Czy Wersja GO obsługuje również podobne polecenia git log? Zrobiłem szybkie wyszukiwanie słów kluczowych "zapytanie" i "filtr" i nic nie znalazłem.

Odpowiedzi:

2 dla odpowiedzi № 1

RevWalk jest tym, czego szukasz.

repo, err := git.OpenRepository("path/to/repository")
log.Println(err)

w, err := repo.Walk() // returns a RevWalk instance for this repo
log.Println(err)

Możesz skonfigurować zwrócone RewWalk instancja.

err = w.PushHead() // instruct to start from the head commit
log.Println(err)

Jeśli chcesz zarejestrować inny oddział, możesz go użyć PushRef zamiast. Istnieją inne opcje konfiguracji do konfigurowania początkowych i końcowych punktów dziennika. Sprawdź dokumentację dla nich.

Użyj Powtarzać metoda przechodzenia przez listę zatwierdzeń. Musisz przekazać mu funkcję, która będzie wywoływana dla każdego zatwierdzenia na liście.

w.Iterate(func(c *git.Commit) bool {
fmt.Println(c.Message())
return true  // return false when you want to stop iterating
})

1 dla odpowiedzi nr 2

Można przynajmniej emulować dziennik git za pomocą Commit.Parent metoda która pozwala na dostęp do rodzica commit (od commit.go).

Poza tym nie widziałem bezpośredniego połączenia z dziennikiem git.