コードレビューにはGerritを使用しています。Gerrit はレビュー済みのコードを非標準の参照パス - に保存しますrefs/changes
。したがって、 commit への参照は のようになりrefs/changes/95/295/2
ます。プロジェクトを Gerrit からスーパープロジェクトにサブモジュールとして追加したいと考えています。
私は2つのステップでそれを行うことができます:
- プロジェクトをサブモジュールとして、現在マスターが指している commit-hash に追加します
- 変更を実行
git fetch origin refs/changes/95/295/2 && git checkout FETCH_HEAD
してコミットします。
しかし、スーパープロジェクトをチェックアウトしてgit update --init
git を実行しようとすると、失敗が報告されます。refs/changes
Git はサブモジュールでハッシュを見つけることができません。これは、git がデフォルトで参照を認識せず、それらからオブジェクトをダウンロードしないためです。
git config --add remote.origin.fetch '+refs/changes/*:refs/remotes/origin/changes/*'
わかりました。私の gerrit リポジトリで実行して修正し、サブモジュールの更新を再試行すれば問題ありません。
質問は、通常のワークフローのように、サブモジュールの「追加」と「初期化/更新」を 1 つのステップで実行できますか? 基本的には、"clone"/"pull"/"submodule add"/"sumbodule update" 実行開始前に refspec を設定する機能が必要です。