10

私はMainGerritServer多くのプロジェクトをホストしています。
また、RogueGerritServer多くのプロジェクトをホストしています。

Git コミット履歴と Gerrit レビュー履歴の両方を保持しながら、からからProjectARogueGerritServerと移動する方法を探しています。MainGerritServer

たとえば、Android プロジェクトの Gerrit 履歴を自分の Gerrit サーバーにインポートして、Android のフォーク バージョンで作業するときに、ローカル サーバーで Gerrit 履歴を検索できるようにします。これを行う最善の方法は何ですか?

単純な Git インストールの場合は、単にProjectA自分のコンピューターにクローンを作成してから にプッシュしMainGerritServerます。Gerrit ベースのプロジェクトは同じように機能しますか?

Gerrit のインストールではバックグラウンドでデータベースが使用されるため、心配しています。データベース内の情報も移行する必要があるかどうかはわかりません。データベース ダンプを取得し、それを新しいサーバーに移動することに関する多くのスレッドを見ました。ただし、プロジェクトを 1 つだけ移動しようとしているため、DB ダンプを取得するのは適切ではないようです。私が見た最も近い答えはこれでしたが、これはまだ私が探しているものではありません。

特に、これにアプローチする方法を誤解しているかどうかを教えていただければ幸いです。

ありがとうございました

4

4 に答える 4

13

私は最近、多くの git プロジェクトを移動してきました。私はほとんど Gerrit から移動していますが (部門のフィアットのため、Gerrit は IMO の良い選択です)、これは同じように機能し、比較的簡単です。ただし、Gerrit の履歴を移動することはより困難になります。

リポジトリを移動する方法は次のとおりです。

  1. 現在のソースからプロジェクトを複製します。
  2. 新しい gerrit プロジェクトを作成します。
  3. 移動するプロジェクトのローカル クローンで、新しいプロジェクトの場所を新しいリモートとして追加します。

    git remote add NewGerrit ssh://NewGerritServer:29418/NewProject

  4. 新しいリモコンにプッシュします。完全な履歴をプッシュするには、次のようにします。

    git push --all NewGerrit

-u フラグを追加して、新しいリポジトリを自動的に追跡するように設定することもできます。

git push --all -u NewGerrit

Gerrit データベースの移行は、はるかに大きな仕事です。正直なところ、絶対に必要でない限り、単純に移行を控えることをお勧めします。Gerrit 独自の (恐ろしい) クエリ言語である GSQL を介してデータベースに直接アクセスすることで、何が関係しているかを把握できます。より気まぐれで多くの機能がないことを除けば、mysql によく似ています。

ssh -p 24981 HOSTNAME gerrit gsql

これにより、gsql プロンプトが表示されます。これを試して:

gerrit> SHOW TABLES;

少なくとも私がアクセスできる Gerrit のバージョンでは、キャップは重要です。(私のものは確かに時代遅れです。) これにより、約 29 個のテーブルが表示され、プロジェクトの履歴がそれら全体に広がっています。

Shawn Pearce (Gerrit プロジェクト リーダー) からのこの投稿によると、データベースを新しい db サーバーにコピーしてから、SQL を使用して他のすべてのプロジェクトを手動で削除する必要があります。その後、残りのデータをダンプして、他の Gerrit サーバーにインポートできます。注意: change_id値の衝突が発生する可能性があります。ただし、彼はこれに対する回避策を提案しています。

着信セットの最大 change_id を見つけ、宛先サーバーの change_id_seq を手動でバンプして十分な ID スペースを予約し、古い change_id のすべてを何らかのベース値でバンプして、宛先の一意のスペースに配置することができます...そして最後に行を宛先にロードします。

だからそれはできる。後肢の痛みです。

于 2013-07-25T06:53:51.723 に答える
7

Git リポジトリとすべてのレビューをあるサーバーから別のサーバーに移行するために使用できるインポーター プラグインも追加されました。Gerrit バージョン 2.11 以降で動作します。

その他のドキュメント:

インポーター プラグインは、(非公式) CI サーバーからダウンロードできます:マスター バージョン安定版 2.12 バージョン安定版 2.11バージョン。

于 2015-08-26T07:53:18.373 に答える