web-dev-qa-db-ja.com

Subversionリポジトリを別のサーバーに移動する

Subversionコードベースをホストするサーバーがあります。そのサーバーは現在 Windows Server 20 ボックスであり、IT管理者は Windows Server 2008 に更新したいと考えています。

これは、サーバーが構築されている間にSubversionリポジトリを移動する必要があり、リポジトリを新しいサーバーに移動するためのベストプラクティスが何であるかを考えていたことを意味します。

オンラインで見ると、次のように使用することをお勧めします。

svnadmin dump /path/to/repository > repository-name.dmp

次に使用します:

svnadmin create repository-name
svnadmin load repository-name< repository-name.dmp

リポジトリをインポートします。

上記の方法は最良のアプローチのように思えますか?

66
Ryan Smith

はい、リポジトリをダンプしてロードする方法があります。リポジトリフォルダーの直接コピーは、コピープロセスの進行中に誰もリポジトリにアクセスしないことが確実な場合にのみ実行可能なオプションです(または、これらのケースを処理できるリポジトリの「ホットコピー」を実行できます)安全な方法で)。

また、すべての作業コピーを再チェックアウトするか、URLを書き換えるだけのsvn switchコマンドを使用する必要があります。より便利な方法は、TortoiseSVNのRelocateコマンドを使用することです。これにより、再配置プロセス中にミスを犯すリスクが軽減されます。

58
petr k.

私の復元スクリプトは次のとおりです。

svnadmin create repository-name --fs-type fsfs
svnadmin load   repository-name --force-uuid < repository-name.dmp

最初の行は、リポジトリがFSFSバックエンドを使用することを保証します(これを含む多くのソースで推奨されます: How FSFS is Better 、およびSubversionの新しいバージョンはデフォルトとしてそれを使用します) 。 [〜#〜] fsfs [〜#〜] はSubversionファイルシステム実装の名前です。

2行目は、リポジトリのUUIDを保持し、移行を容易にします(--force-uuidスイッチ、作業コピーの再配置は失敗します)。

いくつかのリンク:

27
alexandrul

svnsync を使用してリポジトリを移動することもできます。そうすれば、「古い」リポジトリを停止することなく、すべてのデータを転送できます。これは、シェルアクセスやリポジトリのダンプへのアクセスがないホスト環境からデータを取得する唯一の方法でもあります。

9
Sander Rijken

別の選択肢:

svnrdumpを使用します。 http://www.crowbarsolutions.com/backing-up-restoring-a-remote-svn-repository/

「svnrdumpというツールが必要になります。Apacheで説明されているように、「svnrdumpはsvnadminダンプとsvnadminロードの機能を複製しますが、ソースまたはターゲットリポジトリへの管理者(ローカルファイルシステム)アクセスを必要とせずに、リモートリポジトリで動作します」

5
JRun

ファイルシステムタイプのリポジトリを使用している場合は、リポジトリを含むフォルダをそのまま取得して移動できます。サーバーを変更する場合は、「Relocate」コマンドを使用して、ローカル作業ディレクトリがリポジトリを検索する場所を変更する必要がある可能性があります。

4
NerdFury

最も簡単な方法は以下を使用することです:

svnadmin hotcopy path/to/your_current_directory /path/to/your_destination_directory
1
orezvani