'update'フックに問題があります。新しいブランチの場合、「oldrev」として0000000000000000000000000000000000000000を取得します。そして、私はそのケースを処理する方法がわかりません。
すべてのコミットメッセージが有効なJiraの問題を参照するという要件があります。そこで、中央リポジトリに「更新」フックをインストールしました。そのフックは「oldrev」と「newrev」を取得します。次に、それらを次のように「gitrev-list」に渡します。
git rev-list $oldrev..$newrev
これにより、すべての回転数のリストが表示されます。このリストを繰り返し処理して、必要な処理を実行できます。
問題は、ユーザーが新しいブランチをプッシュすると、フックがoldrevとして0000000000000000000000000000000000000000を取得することです。そして、「gitrev-list」は単に次のように文句を言います。
fatal: Invalid revision range 0000000000000000000000000000000000000000..21bac83b2
では、その新しいブランチにあるすべての回転数のリストを取得するにはどうすればよいですか?私はかなり長い間ネットを検索しましたが、何も見つかりませんでした。私が見つけたフックの例
- 問題を処理せず、上記のエラーメッセージで失敗します
- oldrevを""に設定して問題を誤って修正しようとすると、rev-listから誤った結果が返されます。
- 彼らがそのoldrevに遭遇したときに単にあきらめる
これらのどれも特にエキサイティングに聞こえません。
それで、誰かがその場合に正しい答えを得る方法を知っていますか?「newrevから到達可能であるが、他のブランチ(=新しいブランチを除くすべてのブランチ)からは到達できないすべての回転数を取得する」ためにgitにクエリを実行することを考えていました。しかし、それでも、新しいブランチから古いブランチへのマージがあった場合、間違った答えが返されます。