类似的问题之前曾被问过(比如this),但答案并没有为我解决。我的作者文件如下所示:
cmannett85 = cmannett85 <cmannett85@###>
cbamber85 = cmannett85 <cmannett85@###>
www-data = cmannett85 <cmannett85@###>
我得到的错误是;
Author: cmannett85 not defined in users.txt file
此错误发生在大约第 1500 次提交时,其他作者条目都很好,因此条目的基本结构必须正确。我在 SO 上看到的大多数问题都集中在 SVN 用户名前面/附加了一个空格,但正如您从粘贴的错误中看到的那样 - 没有多余的空格。
我还认为可能是我将一个用户名映射为一个相同的用户名,所以我更改了 Git 用户名,但没有什么区别。我什至尝试在 Windows 和 Unix 格式之间切换行尾,但同样没有改变。
我使用以下方法调用该操作:
$ git svn clone https://subversion.assembla.com/svn/#### --authors-file=users.txt --no-metadata -s ####
我尝试删除
--no-metadata
arg,但没有区别。谁能看出我哪里出了问题吗?
更新
按照Lazy Badger的建议,我跑了:
$ svn log --xml | grep author | sort -u | perl -pe 's/.>(.?)<./$1 = /'
它返回这个:
<author>cbamber85</author>
<author>cmannett85</author>
<author>www-data</author>
刚刚偶然发现了这个问题,最终通过从以UTF-8文件编码的authors.txt文件中删除字节顺序标记来解决这个问题,从而使Linux将其视为纯文本ASCII文件而不是UTF-8。
由于我的文件在 Windows 上开始作为 Powershell 输出,更普遍的正确答案是简单文本永远不是简单文本,这使得 Lazy Badger 的答案成为最好的,因为它避免了掩盖这些差异的麻烦。
我想我找到了问题和解决方案:
我的author.txt在转换为ANSI后被编码为UCS2 Little Endian,文件大小下降到50%并且它有效。
文件大小从 70KB 下降到 35KB,但我认为这不是解决方案。
我的author.txt是使用Windows Active Directory中的powershell脚本创建的。
我还将行尾从 CR LF 更改为 LF,但你提到,你也已经尝试过这个。所以我认为这是一个字符编码问题。
我确信 - 在克隆之前从纯 SVN 数据准备用户列表将是更安全的方式
我是这样的:
svn log --xml URL | grep "author" | sort -u | ...strip xml-tags here...
原来原始文件被编码为 UCS-2 Little Endian(如上所述),但 UTF-8 的默认编码有效。我不需要更改行结尾。
Author: SYSTEM not defined in authors-transform.txt file
除此之外,还需要使用无 BOM 的 UTF8,并使用 LF 而不是 CRLF。 如果列表中的最后一个用户不是以 LF 结尾,您也可能会收到此错误。