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 № 1RevWalk 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.