git ですべてのコミット (または単一のブランチからのすべて) のリストを調べる方法を知りたがっていました。これはどのようにgit log
行うのですか (コードの一部へのポインターもクールですが、どこから始めればよいかわかりません)。どういうわけか生のファイルシステムでそれを行うことはできますか?
理由は次のとおりです。システム コマンドを呼び出す必要のない他の言語でツールを作成する必要があります。
更新: Git internals: Git objects (および次の章) を読みましたが、packfiles もあることを理解しています。私が抱えている主な問題は、実行時に何が起こっているのかを理解することです: git rev-list --all
。または - 単一ブランチの場合 ---all
フラグなしの同じコマンド。git は頭を見つけ出し、そのオブジェクト ストアから取り出し、親の SHA をチェックし、それらをオブジェクト ストアから取り出しますか? または、他のより高速な方法はありますか?