写这篇日志真是带着情绪。用中文搜索这个错误出来的内容完全千篇一律,根本就没有给出具体的解法。很怀疑那些转载的人是真的验证过的吗? 幸亏还有biying的英文搜索。
http://stackoverflow.com/questions/10279222/how-can-i-fix-the-svn-import-line-endings-error/10280315
出现这个错误的原因是工程师在输入日志时回车被记录的是(Control+M / ^M) 。在SVN老版本升级成1.6以上的新版本时特别常见。规避方案是使用svnsync
我要做的操作是把老的版本库迁移的新的高版本的服务器。所以以下操作是在新的服务器上执行的:
1. 创建版本库,忽略掉EOL错误
svnadmin create repo
svnadmin load repo < archive.svn --bypass-prop-validation
2.创建中间过渡的修复版本库
svnadmin create repo-fixed
svnsync
要求使用 repo-fixed/hooks/pre-revprop-change
#!/bin/sh
exit 0
pre-revprop-change程序的内容如上就可以。记住添加可执行权限
3.初始化svnsync的目标配置库,即repo-fixed:
svnsync init file:///path/to/repo-fixed file:///path/to/repo
4. 拷贝整个存储库
svnsync sync file:///path/to/repo-fixed
5.dump这个过渡库repo-fixed
svnadmin dump repo-fixed > archive-fixed.svn
你现在得到的 archive-fixed.svn
, 是和 archive.svn
一样的库,只是 EOLs 的错误都已经被修复了. 之后在新的服务器上导入这个dump文件就可以了
(可选的) 你可以删除这个svnsync 产生的临时库:
rm -rf repo-fixed
如果你是本机的升级,导入新的dump文件可能会得到如下错误: Repository UUID does not match expected UUID
. 你可以使用命令 svnadmin setuuid ...
来修改成原先的UUID。