回答:
(作業コピーではなく)リポジトリ自体にアクセスできる場合は、現在のリポジトリをダンプし、それをフィルタリングしてdocsフォルダーに関する情報のみを含め、他のリポジトリにロードすることができます。
このようなものになります:
svnadmin dump /svn/old_repos > ./repository.dump
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./repository.dump > ./docs_only.dump
svnadmin load /svn/new_repos < ./docs_only.dump
リポジトリにアクセスしないと、変更履歴を維持できず、ファイルを新しいリポジトリにコピーしてコミットすることで解決する必要があります。
"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" dump c:\Repositories\MyRepository > c:\Temp\MyReository.dump
svndumpfilterには重大な欠陥があります。ファイルまたはパスが、フィルタリングしているパスからフィルタリングしているパスにコピーされた場合、svndumpfilterは履歴を記入できず、ジョブは失敗します。
この問題が発生した場合は、svndumpfilter2を使用できます。
これについては、SVNのドキュメントで説明されています。...の[ Repository Maintenance]セクションを確認してくださいsvndumpfilter
。特に、中央リポジトリからプロジェクトをダンプし、それらを新しい個別のリポジトリに移動する方法について説明します。
私はあなたがそれをリモートで(つまり、ローカルコピーなしで)できるとは思いません。しかし、これは機能するはずです。svn export
元のサーバーからのフォルダー、次にsvn add
新しいリポジトリーへ。
お気に入り:
$ svn checkout svn://example.net/newrepo .
$ svn export svn://example.com/oldrepo/mydir ./mydir
$ svn add ./mydir; svn commit
編集:D'oh、これは歴史を落とします。サミュエルが説明するsvnadmin
ように使用します。
今後の参考のために:
SVNドキュメントは明確に報告します:
最上位のディレクトリを削除するためにダンプファイルを手動で編集する予定の場合は、行末文字をネイティブ形式(たとえば、\ r \ nから\ n)に自動的に変換するようにエディターが設定されていないことを確認してください。コンテンツがメタデータに同意しないためです。これにより、ダンプファイルが役に立たなくなります。
sedまたはVimを使用して最上位ディレクトリを置き換えますが、このディレクトリ名はプロジェクトファイル内にも含まれていました !!!! これにより、SVNロードチェックサムエラーが発生します。
したがって、この操作を実行するときは、パス名のみのsedで文字列を置換しないでください。
「Node-path:old_path」を「Node-path:new_path」に置き換えます。詳細については、SVNブックの第5章「リポジトリ管理」を参照してください。
受け入れられた答えを使用しようとしましたが、巨大なリポジトリがあり、小さなディレクトリをエクスポートしたかったので、リポジトリ全体をダンプする余裕がありませんでした。
したがって、私は自分のディレクトリが変更されたリビジョンのみをエクスポートしました(エクスポートするディレクトリがリポジトリ内の他の場所への参照を持っている場合、これは機能しない可能性があります)。
svn log URL_to_docs | awk '/^r/{gsub(/^r/,"",$1);print $1}' > revisions.txt
#tac for revisions in reverse (oldest revision first)
tac revisions.txt | while read line; do svnadmin dump /svn/old_repo -r$line >> ./docs_revisions.dump ; done
#You don't have to filter if you commited only files in your directory docs in your exported revisions
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./docs_revisions.dump > ./docs_only.dump
svnadmin load /svn/new_repos < ./docs_only.dump
リポジトリURL(URL_to_docs
)、サーバー/svn/old_repo
内の場所(path/to/docs
)、リポジトリ内のドキュメントへのパス()を置き換える必要があります
docs_only.dump
新しいリポジトリのdocディレクトリの場所を変更したい場合は、簡単に編集できます。