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