1分間に10〜30回、単一の大きなリポジトリでgitrev-listを呼び出すツールが本番環境にあります。gitの応答時間は、約1秒から最大50秒まで大きく異なります(タイムアウトメカニズムがgit要求を放棄する前)。
git rev-list --pretty=raw 2ef9fa0d0fa4c34d57103a0545b3cc96c2552e6f..f5daa48ebcd3cc95a0df683f8c3a3ad64def4a6e
目標は、2つのコミットが祖先/子孫であるかどうかを確認することです。そうである場合は、2つのコミットのどちらが祖先であるかを確認します。この呼び出しを1回行います。出力が得られた場合は答えがあり、出力がない場合はコミット位置を入れ替えて再度実行します。今回出力がない場合、それらは互いの祖先/子孫ではありません。
この情報を見つけるための別のより効率的な方法はありますか?それに関しては、git以外の構造でコミットツリーをモデル化するための提案でさえも高く評価されています。
ありがとう。