web-dev-qa-db-ja.com

リポジトリをgitからgerritにインポートする

Gerritについて2つの質問があります。

  1. 既存のGitリポジトリをGerritの形式に変換またはインポートするにはどうすればよいですか? Gerritの制御なしで多くのコミットがありました。それらのコミットを単純にGerritプロジェクトにプッシュしたいと思います。

    私はそれをする2つの方法を見ます:

    1. 既存のベアGitディレクトリをGerritにコピーしてから、データベースに追加します。それは安全な方法ですか?

    2. すべてのコミットをローカルリポジトリからgerritリポジトリにプッシュします。

  2. リポジトリをGerritから元のGit形式に戻す方法 Gerritの特別な*/for/*ブランチを削除する必要がありますか?

28
DEgITx

まず第一に:特別な「Gerrit形式」はありません。 Gerritは通常のgitリポジトリで動作します。

  1. Gerritで新しいプロジェクトを作成します(最初のコミットなし)。作成したリポジトリをリモートとして既存のリポジトリに追加し、単にプッシュします。リポジトリに直接プッシュできるように(レビューをバイパスして)Gerritを設定すると、リポジトリ全体をインポートできます。

    または、Gerritのリポジトリの場所に直接アクセスできる場合(たとえば、SSHまたはローカルファイルシステム上)、Gerritを完全にバイパスして、リポジトリ(Gerritが作成した場所)に直接プッシュできます。ただし、GerritがリポジトリのHEADが更新されたことに気付くには、後でGerritキャッシュをフラッシュする必要があります。

  2. 前述のように、「Gerrit形式」はありません。リポジトリをgerritからクローンするだけで十分です。特別なブランチについて心配する必要はありません。

29
helmbert

多くのGITプロジェクトをgerritにインポートしました。最も簡単な方法は、gitリポジトリのxy.gitディレクトリを、gerritがgitリポジトリを保管するディレクトリにコピーすることでした。 gerritプロセスの再起動後、新しいプロジェクトは新しいプロジェクトのリストに表示され、説明とアクセス権を編集できます。

8
beka
  1. Gerritで新しいプロジェクトを作成し、そこにgitリポジトリをプッシュするだけです。レビューをバイパスする場合は、refs/for/masterではなくmasterに直接プッシュします。これを行う権限を自分に追加する必要があります。

    エラーメッセージは、sshキーをGerritにまだインポートしていないことが原因であると思われます。

  2. Gerritからリポジトリを複製するだけです。余分なブランチは含まれません。

6
Kalle Pokki

追加情報...

したがって、gitリポジトリをgerritデータの場所に直接コピーでき、再起動(またはキャッシュのフラッシュ(reindex))後に表示されます。

ただし、リポジトリから重要な設定が欠落しているため、プッシュ、ブランチの作成、レビューなどができない場合があります。

リポジトリを表示すると、「refs/meta/config」ブランチが欠落していることがわかります。したがって、変更のない通常のシステムでは、これはすべてのプロジェクトから継承しますが、これは構成上の任意のプロジェクトである可能性があります。

構成を修正する手順:

  1. リストアイテム
  2. Gitリポジトリをコピーする
  3. キャッシュの更新/ Gerritの再起動/インデックスの再作成
  4. プロジェクトリストビューからリポジトリを開く
  5. 枝をクリックします
  6. リビジョン「HEAD」の「refs/meta/config」の新しいブランチ名を入力します
  7. プロジェクトの一般ビューから「構成の編集」をクリックします。
  8. これにより、このブランチに構成用のファイル(project.config)が作成されます。動作中のレポから取得するか、次のようにデフォルト設定を追加します。

例えば.

[access]
   inheritFrom = All-Projects
  1. [保存]、[閉じる]の順にクリックします。
  2. レビュー(クリックして+2)
  3. [編集の公開]をクリックして、この変更をgerritに保存します。

これで、他のプロジェクトと同じように、賢明な継承構成でリポジトリを使用できます。

0
Trevor Getty