Answers:
如果您有权访问存储库本身(而不是工作副本),则应该能够转储当前存储库,对其进行过滤以仅包含有关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 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_to_docs
),服务器中的位置(/svn/old_repo
)和存储库中文档的路径(path/to/docs
)
docs_only.dump
如果要更改新存储库中doc目录的位置,可以轻松进行编辑。