之前已经提出过类似的问题(就像这个问题一样),但答案并没有为我解决.我的作者文件看起来像这样:
cmannett85 = cmannett85 <cmannett85@###>
cbamber85 = cmannett85 <cmannett85@###>
www-data = cmannett85 <cmannett85@###>
Run Code Online (Sandbox Code Playgroud)
而我得到的错误是;
Author: cmannett85 not defined in users.txt file
Run Code Online (Sandbox Code Playgroud)
此错误发生在大约第1500次提交时,其他作者条目正常,因此条目的基本结构必须正确.我已经在SO上看到的大多数问题围绕着SVN用户名有一个空格预先/附加到它们,但是从粘贴的错误中可以看出 - 没有多余的空白区域.
我也认为可能是因为我为同一个用户名映射了一个用户名,所以我更改了Git用户名,但没有区别.我甚至尝试在Windows和Unix格式之间切换行结束,但再次没有变化.
我使用这个调用操作:
$ git svn clone https://subversion.assembla.com/svn/#### --authors-file=users.txt --no-metadata -s ####
Run Code Online (Sandbox Code Playgroud)
我尝试删除--no-metadataarg,但没有区别.任何人都可以看到我哪里出错了?
UPDATE
按照Lazy Badger的建议,我跑了:
$ svn log --xml | grep author | sort -u | perl -pe 's/.>(.?)<./$1 = /'
Run Code Online (Sandbox Code Playgroud)
它返回:
<author>cbamber85</author>
<author>cmannett85</author>
<author>www-data</author>
Run Code Online (Sandbox Code Playgroud)
小智 5
只是偶然发现了这个问题,最终通过从以 UTF-8 文件编码的 author.txt 文件中剥离字节顺序标记来解决该问题,从而使 Linux 将其视为纯文本 ASCII 文件而不是 UTF-8。
由于我的文件在 Windows 上作为 Powershell 输出开始,更普遍的正确答案是简单的文本永远不是简单的文本,这使得 Lazy Badger 的答案是最好的,因为它避免了掩盖这些差异的麻烦。
我确信 -在克隆之前从纯 SVN 数据准备用户列表将是更安全的方式
即类似:
svn log --xml URL | grep "author" | sort -u | ...strip xml-tags here...
Run Code Online (Sandbox Code Playgroud)