1

Git リポジトリを古い SCM サーバーから新しいサーバーに移動します。私の主な関心事 (もちろん忠実度以外) は、ダウンタイムを最小限に抑えることです。これが私の計画です:

  1. 新しいマシンで、次を使用して各リポジトリを複製しますgit clone --mirror
  2. 各リポジトリのリポジトリ フックをコピーする
  3. 古いサーバーへのアクセスを禁止します (gitosis を使用しているため、新しいサーバーを除くすべてのユーザーのアクセスを削除します)
  4. DNS エントリを移動して、DNS エイリアス Git ユーザーが使用するようにします
  5. git pull新しいサーバー上のリポジトリごとに実行します。
  6. 新しいサーバーのリポジトリごとに、構成ファイルを編集してremote "origin"セクションを削除します。
  7. 新しいサーバーへのアクセスをオンにする

質問:

  1. これは正しく見えますか?私は特にステップ#6に関心があります。
  2. ダウンタイムを短縮するこれを行う方法はありますか?

ありがとう。

4

1 に答える 1

1

私は(古いサーバーと新しいサーバーの間で通信が不可能な場合):

  • を使用して各リポジトリをバンドルするgit bundle
  • 新しいサーバーにバンドルをコピーします
  • ベアリポジトリを作成する
  • git fetch空の裸のリポジトリのそれぞれのバンドルから(設定する原点なし)
  • フックをコピーホバー
  • 古いサーバーへのアクセスを禁止する
  • 各リポジトリで最後のgitバンドルを作成します(インクリメンタルバンドル、非常に高速)
  • それらの小さなバンドルをコピーします
  • git fetch小さな増分バンドルからの増分
    </ダウンタイム:削除する起点なし>
  • アクセスを復元

新しいサーバーと古いサーバーの間で(SSLを介して)通信が可能な場合:

  • すべてのプロジェクトにアクセスできる、特別な「移行」gitosisユーザーを作成します
  • clone --bare新しいサーバー上の各プロジェクト
  • フックをコピーホバー
  • 古いサーバーへのアクセスを禁止する
  • git fetch複製された各リポジトリで最後を作成します
  • 原点を削除</ダウンタイム>
  • アクセスを復元
于 2010-08-30T17:29:38.117 に答える