2つのサーバーをマージします。それを行うには、「新しい」サーバーにSVNをインストールし、「古い」サーバーに設定したすべてのリポジトリを移動する必要があります。
これは簡単な操作ですか? TortoiseSVNが提供する「再配置」オプションを使用している可能性がありますか?それを行う最良の方法は何ですか?
リポジトリのセットアップ方法を再編成するのに最適な時期でしょうか?
svnadmin dump
関数を使用してリポジトリを移行できます。 SVNサーバーで、svnadmin dump /absolute/path/to/the/repo > /tmp/repo.svndump
と入力します。これにより、リポジトリ全体がシステムの一時ディレクトリにあるテキストファイルにエクスポートされ、「repo.svndump」という名前が付けられます。そのファイルを新しいサーバーに転送する前に圧縮することができます。
リポジトリをエクスポートしたら、ダンプファイルを新しいサーバーに転送し、svnadmin load /absolute/path/to/the/**new**/repo < repo.svndump
のようにインポートできます。
詳細については、「 svnadmin dump 」および「 svnadmin load 」を参照してください。
リポジトリをダンプして新しいサーバーにロードした後、--relocate
コマンドを使用してローカルコピーを新しいサーバーに切り替えます。
注意:リポジトリがexternals
を使用する場合、いくつかの問題が発生します。これについての詳細は、サーバー障害に関する 私の質問 を参照してください。
新しいサーバーが同じオペレーティングシステムを使用している場合は、リポジトリフォルダー全体を新しいサーバーにコピーするだけです。ダンプして再ロードする必要はありません。
Relocateコマンドを使用すると、作業コピーを新しいサーバーに向けることができます。つまり、リポジトリを移動するのに役立ちません。新しいチェックアウトを行う必要がなくなります。
外部は問題になる可能性がありますが、そうである必要はありません。外部リポジトリが同じサーバー上にある場合は、おそらく相対URLで外部を指定しました。新しいサーバーが同じ構造を使用している場合、すべてが正常に機能するはずです。
svnadmin dump
がオプションでない場合は、 clone-svn2svn bashスクリプトを使用できます。 SVNディレクトリを別のSVNサイトにコピーします。競合履歴または部分的な変更履歴があります。以下は、主なコマンドラインパラメーターです。クローンが履歴のコピーを開始するリビジョンを設定することもできます。
clone-svn2svn.sh <source-svn-url> <destination-svn-url>
スクリプトを機能させるには、bashとgitが必要です。 Windowsまたは別のプラットフォームを使用している場合は、 git-scm web site からダウンロードしてください。これは、bashが含まれるgitインストーラーです。
スクリプトは、git-svn
を使用してソースSVN履歴を一時gitリポジトリにダウンロードし、ターゲットSVNリポジトリに履歴をアップロードします。
ターゲットリポジトリのリビジョンの作成者は、スクリプトを実行しているユーザー(自分)です。ただし、各改訂メッセージには、元の著者を指定する追加の行があります。だからそれは悪くない。
これは、レポの設定方法を再編成する良い機会でしょうか?
リポジトリを新しいサーバーに移行する際にリポジトリを停止する必要があるため、これを行うのに最適な時間です。