寫這篇日誌真是帶着情緒。用中文搜索這個錯誤出來的內容完全千篇一律,根本就沒有給出具體的解法。很懷疑那些轉載的人是真的驗證過的嗎? 幸虧還有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。