Gerritについて2つの質問があります。
既存のGitリポジトリをGerritの形式に変換またはインポートするにはどうすればよいですか? Gerritの制御なしで多くのコミットがありました。それらのコミットを単純にGerritプロジェクトにプッシュしたいと思います。
私はそれをする2つの方法を見ます:
既存のベアGitディレクトリをGerritにコピーしてから、データベースに追加します。それは安全な方法ですか?
すべてのコミットをローカルリポジトリからgerritリポジトリにプッシュします。
リポジトリをGerritから元のGit形式に戻す方法 Gerritの特別な*/for/*
ブランチを削除する必要がありますか?
まず第一に:特別な「Gerrit形式」はありません。 Gerritは通常のgitリポジトリで動作します。
Gerritで新しいプロジェクトを作成します(最初のコミットなし)。作成したリポジトリをリモートとして既存のリポジトリに追加し、単にプッシュします。リポジトリに直接プッシュできるように(レビューをバイパスして)Gerritを設定すると、リポジトリ全体をインポートできます。
または、Gerritのリポジトリの場所に直接アクセスできる場合(たとえば、SSHまたはローカルファイルシステム上)、Gerritを完全にバイパスして、リポジトリ(Gerritが作成した場所)に直接プッシュできます。ただし、GerritがリポジトリのHEADが更新されたことに気付くには、後でGerritキャッシュをフラッシュする必要があります。
前述のように、「Gerrit形式」はありません。リポジトリをgerritからクローンするだけで十分です。特別なブランチについて心配する必要はありません。
多くのGITプロジェクトをgerritにインポートしました。最も簡単な方法は、gitリポジトリのxy.gitディレクトリを、gerritがgitリポジトリを保管するディレクトリにコピーすることでした。 gerritプロセスの再起動後、新しいプロジェクトは新しいプロジェクトのリストに表示され、説明とアクセス権を編集できます。
Gerritで新しいプロジェクトを作成し、そこにgitリポジトリをプッシュするだけです。レビューをバイパスする場合は、refs/for/masterではなくmasterに直接プッシュします。これを行う権限を自分に追加する必要があります。
エラーメッセージは、sshキーをGerritにまだインポートしていないことが原因であると思われます。
Gerritからリポジトリを複製するだけです。余分なブランチは含まれません。
追加情報...
したがって、gitリポジトリをgerritデータの場所に直接コピーでき、再起動(またはキャッシュのフラッシュ(reindex))後に表示されます。
ただし、リポジトリから重要な設定が欠落しているため、プッシュ、ブランチの作成、レビューなどができない場合があります。
リポジトリを表示すると、「refs/meta/config」ブランチが欠落していることがわかります。したがって、変更のない通常のシステムでは、これはすべてのプロジェクトから継承しますが、これは構成上の任意のプロジェクトである可能性があります。
構成を修正する手順:
例えば.
[access]
inheritFrom = All-Projects
これで、他のプロジェクトと同じように、賢明な継承構成でリポジトリを使用できます。