我正在尝试获取我的集合SVN 存储库。我已关注他们的指示,并下载导出生成的 tar.gz 文件。
我想在将转储导入到另一个 repo 之前对其进行 svndumpfilter 操作,但我所做的一切都会产生一些错误;
- 如果我运行
tar xzf
该文件,我会得到所有内容(一个目录,而不是一个平面文件) - 如果我把这些内容放在一个目录中并运行 svndumpfilter 我会得到一个错误svndumpfilter: E000021: Can't read stream: Is a directory
- 如果我只解压(而不是解压)gz 文件,然后尝试在 tar 文件上运行 svndumpfilter,我会得到
svndumpfilter: E140001: Malformed dumpfile header 'breakout.ini'
如果我尝试直接使用下载转储,
svnrdump dump http://subversion.assembla.com/svn/<repo_name>/
则会出现错误:* Dumped revision 6. svnrdump: E175002: REPORT of 'http://subversion.assembla.com/svn/<repo_name>': Could not read response body: Connection reset by peer (http://subversion.assembla.com)
在转储修订版 6 之后,这种情况始终会发生。
如果我尝试将未压缩的文件导入本地仓库,我会得到
$ sudo svnadmin create my_repo $ sudo svnadmin load --force-uuid my_repo < repo_download.tar.gz svnadmin: E140001: Malformed dumpfile header '?\8'
在本地,我在 Ubuntu 上使用 svn 版本 1.7.4。我不知道 assembla 使用哪个版本。
我是否遗漏了某些明显的内容,或者他们是否通过对应该是平面转储文件的内容进行 tar 处理而造成了混淆?
在未压缩的下载上运行树得到:
tree -d
.
âââ tmp
âââ db
â  âââ node-origins
â  âââ revprops
â  â  âââ 0
â  âââ revs
â  â  âââ 0
â  âââ transactions
â  âââ txn-protorevs
âââ hooks
â  âââ post-commit.d
â  âââ post-revprop-change.d
â  âââ pre-commit.d
âââ locks
14 directories
答案1
更新:
从您提供的额外信息来看,您已经下载了整个“后端“SVN 存储库。正如评论中所讨论的,请尝试使用以下命令检查它:
svn checkout file://$(pwd)/tmp ./checkout
从您提供的额外信息来看,您好像下载了错误的内容,或者他们的下载服务出现故障。
svnrdump
应该可以工作,但可能值得尝试将远程存储库镜像到本地存储库:
svnadmin create mirror
echo '#!/bin/true' > mirror/hooks/pre-revprop-change
chmod +x mirror/hooks/pre-revprop-change
svnsync init file://$(pwd)/mirror http://subversion.assembla.com/svn/${repo_name}
svnsync sync file://$(pwd)/mirror
不幸的是,您可能会发现这在第 6 次修订版时或之后也会发生,但值得一试 - 也许问题修订特别大?
如果svnsync
也行程,您是否可以正常檢查出有问题的修订版本?
svn checkout -r 6 http://subversion.assembla.com/svn/${repo_name} ./my_repo
笔记:可能 rev 6 没问题,但问题实际上出在 rev 7 上,所以也试一下。