62

すべての履歴をコピーして、あるリポジトリから別のリポジトリにディレクトリをコピーする簡単な方法はありますか?

4

9 に答える 9

79

最も簡単な方法は、次を使用することです。

svnadmin dump path/to/repos > repos.out

これにより、リポジトリの移植可能な形式 (履歴付き) がファイルに作成されますrepos.out。その後、使用できます

svnadmin load path/to/newrepos < repos.out

「ダンプされた」リポジトリを新規または既存のリポジトリにロードします。

Chapter 5. Repository Maintenance -> Migrating Repository Data Elsewheresvnadmin dumpには、バージョン 1.7 での使用に関する次の注意事項があります。

Subversion リポジトリ ダンプ形式では、バージョン管理されたリポジトリの変更のみが記述されます。コミットされていないトランザクション、ファイルシステム パスのユーザー ロック、リポジトリまたはサーバー構成のカスタマイズ (フック スクリプトを含む) などに関する情報は含まれません。

于 2009-06-02T14:48:05.473 に答える
36

Subversion bookで提案されているように:

svnadmin dump path/to/repos_src \
    | svndumpfilter include path/inside/svn/to/directory \
    | svnadmin load path/to/repos_dst

例を挙げます:

svnadmin dump /var/lib/svn/old_repo \
    | svndumpfilter include trunk/my_project/common_dir \
    | svnadmin load /var/lib/svn/new_repo
于 2009-06-02T15:14:46.417 に答える
24

履歴が必要ない場合は、フォルダーsvn exportなしでクリーンなフォルダーを取得してから、他のリポジトリに入れることができます。.svnsvn import

履歴では、 を使用する必要がありますsvnadmin dump。次に、svndumpfilterを使用する前に、使用するパーツまたはパスのみをフィルタリングするために を使用しsvnadmin loadます。

読むトピック:

于 2009-06-02T14:49:16.453 に答える
9

svnsync— Subversionリポジトリミラーリングコマンドを使用します:

svnsyncSubversionリモートリポジトリミラーリングツールです。簡単に言えば、あるリポジトリのリビジョンを別のリポジトリに再生することができます。

コマンドのSubversionドキュメントにsvnsyncは、次の警告があります(バージョン1.7以降)。これは、ミラーリポジトリを変更するために他のSVNコマンドを使用した後svnsyncは、その特定のミラーで再度使用しないことを意味します。

svnsyncミラーリング操作の一部として行われなかった、ミラーリポジトリで行われた変更に非常に敏感です。これを防ぐには、svnsyncプロセスがミラーリポジトリの変更を許可されている唯一のプロセスであることが最善です。

于 2010-06-29T16:57:35.207 に答える
6

Subversion バージョン 1.7 には、svnrdumpリモート リポジトリにアクセスし、コマンドによって生成されるのと同じ形式のダンプ出力を生成するために使用できる新しいコマンドがありますsvnadmin dump。これにより、 with を使用svnrdumpsvnadmin loadて Subversion リポジトリを転送できます。

新しいコマンドの説明があるsvnrdump—Remote Subversion Repository Data Migrationを参照してください。

レッド ブックの第 5 章の「Migrating Repository Data Elsewhere 」セクションには、次のようなサブセクションを使用した「Repository data migrationsvnrdump 」セクションがあります。

svnrdump[ と の間の]主な違いsvnadmin dumpは、リポジトリへの直接アクセスを要求する代わりにsvnrdump 、Subversion クライアントとまったく同じリポジトリ アクセス (RA) プロトコルを使用してリモートで動作することです。そのため、認証資格情報を提供する必要がある場合があります。また、リモート インタラクション [原文のまま] は、Subversion サーバーで構成された承認制限の対象となります。

また、フックなどのサーバー構成のカスタマイズに関する制限svnadmin dumpが転送されない可能性があることもsvnrdump.

于 2016-07-10T04:11:28.467 に答える
4

を使用してダンプ ファイルを作成し、 を使用svnadmin dumpして新しいリポジトリにインポートできますsvnadmin load

于 2009-06-02T14:47:14.477 に答える
0

あるサーバーから別のバージョンにリポジトリを移行するには、次の手順に従う必要があります。

ステップ 1: すべてのリポジトリ バージョンをダンプ ファイルにダンプします。既存のリポジトリに何千ものバージョンがある可能性があります。したがって、次のスクリプトを使用してダンプ ファイルを作成できます。

ダンプ.sh

# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
   # your-unix-command-here
   echo $i
   svnadmin dump <old_server_repository_location > -r $i  –incremental > <dump_location>/$i.dump
done

上記のスクリプトでは、スペースの空き状況に応じて、古いリポジトリの完全なダンプを取得することも、短い間隔でダンプを取得することもできます (つまり、0 ~ 5000、次に 5001 ~ 10000 など)。

ステップ 2: 以下のコマンドを使用して上記のスクリプトを実行します。カーネルのバージョンに応じて、以下の 2 つのクエリのいずれかを実行する必要があります。

$ bash dump.sh > stdout.sh
$ ./sh dump.sh > stdout.sh

これにより、上記のコマンドを使用して実行する必要があったすべてのコマンドが stdout.sh ファイルに書き込まれます。今後の参考のために、このファイルを追跡できます。

ステップ 3: 古いサーバーと新しいサーバーの間のポート番号 22 に対してファイアウォールが開いているかどうかを確認します。開いていない場合は、管理者に依頼して、これを使用できるようにしてください。

ステップ 4: 次のコマンドを使用して、古い SVN リポジトリから生成されたすべてのダンプ ファイルを新しいサーバーにコピーします。

$ sftp xxxx@<new_server>
Connecting to <new_server>…
Password:
sftp> mput *.dump <new_server>/dump_location

上記のコマンドでxxxxは、操作を行っているユーザーです。sftp を実行する過程で、古いサーバーから新しいサーバーにダンプ ファイルをコピーしています。

ステップ 5: 新しいサーバーに新しいリポジトリを作成する

$ svnadmin create <new_repository>

ステップ 6: 次のスクリプトを使用して、すべてのダンプ ファイルをロードします。

load.sh

# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
   # your-unix-command-here
   echo $i
   svnadmin load –bypass-prop-validation <new_repository> < dump_location /$i.dump
done

上記の 6 つの簡単な手順に従うだけで、既存のリポジトリを新しいリポジトリに移行できます。このプロセスにより、既存のリポジトリの破損したリビジョンについて心配する必要はありません。

于 2014-06-23T12:14:16.223 に答える