1

コードレビューには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 --initgit を実行しようとすると、失敗が報告されます。refs/changesGit はサブモジュールでハッシュを見つけることができません。これは、git がデフォルトで参照を認識せず、それらからオブジェクトをダウンロードしないためです。

git config --add remote.origin.fetch '+refs/changes/*:refs/remotes/origin/changes/*'わかりました。私の gerrit リポジトリで実行して修正し、サブモジュールの更新を再試行すれば問題ありません。

質問は、通常のワークフローのように、サブモジュールの「追加」と「初期化/更新」を 1 つのステップで実行できますか? 基本的には、"clone"/"pull"/"submodule add"/"sumbodule update" 実行開始前に refspec を設定する機能が必要です。

4

1 に答える 1

0

サブモジュールがrefs/changesでコミットを指している状態で変更をプッシュしたくない。Gerritはレビュー中にコードをそこに保存しますが、レビューが完了して変更が送信された後は、標準のrefs /heads/からアクセスできます。サブモジュールは、refs / heads/BRANCH_NAMEにあるレビューおよび送信されたコードを指している必要があります。

于 2012-10-03T16:55:38.933 に答える