/ / GOでlibgit2を使ってgit logコマンドを実行する方法は? - git、go、libgit2

GOでlibgit2を使ってgit logコマンドを実行するには? - git、go、libgit2

私はgoからgit logコマンドを実行することに興味があります。私はC#のバージョンがこれをサポートしていることを知っているhttps://github.com/libgit2/libgit2sharp/wiki/git-log)。あなたは GOバージョン 同様のgit logコマンドもサポートしていますか?私は "クエリ"と "フィルタ"のキーワードをすばやく検索しましたが、何も見つかりませんでした。

回答:

回答№1は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 代わりに。ログの開始点と終了点を設定するための他の設定オプションもあります。それらのドキュメントをチェックしてください。

使用 反復 メソッドを呼び出してコミットリストを調べます。リスト内の各コミットに対して呼び出される関数を渡す必要があります。

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

回答№2の場合は1

少なくともgitログをエミュレートするには、 Commit.Parent 方法 コミットの親にアクセスできるようにします( commit.go)。

それに加えて、私はgit logへの直接の呼び出しを見ませんでした。