すべての履歴をコピーして、あるリポジトリから別のリポジトリにディレクトリをコピーする簡単な方法はありますか?
最も簡単な方法は以下を使用することです:
svnadmin dump path/to/repos > repos.out
これにより、ファイルにリポジトリ(履歴付き)のポータブル形式が作成されますrepos.out
。次に使用できます
svnadmin load path/to/newrepos < repos.out
「ダンプされた」リポジトリを新規または既存のリポジトリにロードします。
第5章リポジトリメンテナンス->他の場所でのリポジトリデータの移行 の使用に関する注意事項svnadmin dump
バージョン1.7以降:
Subversionリポジトリダンプ形式は、バージョン管理されたリポジトリの変更のみを記述します。コミットされていないトランザクション、ファイルシステムパスのユーザーロック、リポジトリまたはサーバー構成のカスタマイズ(フックスクリプトを含む)などに関する情報は含まれません。
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
履歴が必要ない場合は、svn export
フォルダーを使用せずに.svn
フォルダーを取得してから、svn import
を使用して他のリポジトリに入れることができます。
履歴では、svnadmin dump
を使用する必要があります。次に、 svndumpfilter
を使用して、svnadmin load
を使用する前に、使用するパーツまたはパスのみをフィルタリングします。
読むべきトピック:
svnsync
— Subversion Repository Mirroring コマンドを使用します。
svnsync
はSubversionリモートリポジトリミラーリングツールです。簡単に言えば、あるリポジトリのリビジョンを別のリポジトリにリプレイできます。
svnsync
コマンドのSubversionドキュメントには、次の警告(バージョン1.7以降)があり、他のSVNコマンドを使用してミラーリポジトリを変更すると、その特定のsvnsync
を使用しないでください。再度ミラーリングする:
svnsync
は、ミラーリング操作の一部として行われなかったミラーリポジトリで行われた変更に非常に敏感です。これを防ぐには、svnsync
プロセスがミラーリポジトリの変更を許可されている唯一のプロセスであることが最適です。
Subversionバージョン1.7には新しいコマンドsvnrdump
があり、これを使用してリモートリポジトリにアクセスし、svnadmin dump
コマンドで生成されるのと同じダンプ形式の出力を生成できます。これにより、svnrdump
をsvnadmin load
とともに使用してSubversionリポジトリを転送できます。
svnrdump—リモートSubversionリポジトリデータ移行 を参照してください。これには新しいコマンドの説明があります。
レッドブックの第5章では、セクション Migrating Repository Data Elsewhere にサブセクションがあり、svnrdump
を使用したリポジトリデータの移行:
[
svnrdump
とsvnadmin dump
]の主な違いは、リポジトリへの直接アクセスを必要とする代わりに、svnrdump
がリモートで動作することです。 Subversionクライアントはサポートします。そのため、認証資格情報を提供する必要がある場合があります。また、リモート相互作用[原文]は、Subversionサーバーで構成された許可制限の対象となります。
また、フックなどのサーバー構成のカスタマイズに関するsvnadmin dump
の制限が転送されない可能性があることも、svnrdump
に適用されると想定します。
svnadmin dump
を使用してダンプファイルを作成し、svnadmin load
を使用して新しいリポジトリにインポートできます。
ダンプファイルは、
svnadmin dump path/to/repos > dumpfile
コマンドを使用して作成することができます(svn 1.7以降)
svnrdump dump url_to_repos > dumpfile
これは、サーバーではなくリモートコンピューターから実行する場合に便利です。
これが他の人を助ける場合、1つのSubversionリポジトリから別のリポジトリに変更セットを再生するsvn2svnがあります。