将存储库从Windows迁移到Linux时出现格式错误的转储文件头(编码问题?)

Kuk*_*ani 7 linux svn windows character-encoding svnadmin

我正在将SVN存储库从Windows机器(Windows 7)移动到Linux机器(Ubuntu 13).我在Windows上转储repo svnadmin dump并将文件复制到Linux机器上.现在我正在跑步

svnadmin load dest-folder < dumpfile
Run Code Online (Sandbox Code Playgroud)

终端响应

'vnadmin: E140001: Malformed dumpfile header 'SVN-fs-dump-format-version: 2
Run Code Online (Sandbox Code Playgroud)

我怀疑我的字符编码存在问题(Windows与Unix),基于单引号从行的末尾开始到应的开头.但我尝试在Notepad ++中转换字符编码,我只收到不同的错误.

当我以UTF-8编码时,会出现上述错误.

转换为"无BOM的UTF-8"或"ANSI"时:

' into a number04: Could not convert ' 2
Run Code Online (Sandbox Code Playgroud)

转换为"UCS-2 Big Endian"或"UCS-2 Little Endian"时:

svnadmin: E140001: Malformed dumpfile header '?\254?\255'
Run Code Online (Sandbox Code Playgroud)

我对字符编码一无所知,所以我不知道下一步该转向何处.或者也许这是我的转储或回购的问题,但直到现在我还没有任何SVN问题.

Kuk*_*ani 14

这个答案来自用户kostix对我的问题的评论.

问题是我使用PowerShell创建转储文件.当我在Windows中切换到使用vanilla命令提示符时,问题就解决了.正如所指出的,PowerShell通过管道或shell输出文件自动输出UCS-2文件,Linux不喜欢该字符编码.

  • 这不是"Linux不喜欢编码" - 相反,Subversion期望它的转储以UTF-8编码,无论它是哪个平台. (3认同)
  • 有趣的是,这帮助我解决了相反的情况:在 Linux 上转储,在 Windows (VisualSVN) 中加载。起初,我尝试了 PowerShell Get-Content(而不是“cat”)并收到错误。但是旧的 cmd.exe 与类型命令通过管道输送到 svnadmin load 工作。 (2认同)