SVN to Git migration - undefined author,但确实如此

时间:2012-10-31 10:37:51

标签: git svn git-svn

之前已经提出了类似的问题(比如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>

4 个答案:

答案 0 :(得分:4)

偶然发现了这个问题并最终通过从UTF-8文件中编码的authors.txt文件中删除字节顺序标记来解决问题,从而使Linux将其视为纯文本ASCII文件而不是UTF-8。

由于我的文件在Windows上作为Powershell输出开始生活,更普遍的正确答案是简单的文本绝不是简单的文本,这使得Lazy Badger的答案最好,因为它避免了对这些差异进行论文的头痛。

答案 1 :(得分:2)

我确定 - 从纯SVN数据中准备用户列表克隆之前会更加防弹

我喜欢的东西:

svn log --xml URL | grep "author" | sort -u | ...strip xml-tags here...

答案 2 :(得分:2)

我想我发现了问题和解决方案:

我将author.txt编码为 UCS2 Little Endian ,将其转换为 ANSI 后,文件大小降至50%并且有效。

文件大小从70KB下降到35KB,但我不认为这是解决方案。

我的author.txt是使用Windows Active Directory中的powershell脚本创建的。

我还将 CR LF 的行尾改为 LF ,但你提到了,你我也试过这个。所以我认为这是一个charackter编码问题。

答案 3 :(得分:2)

我刚刚遇到了与此处所述相同的问题,结果发现只需在notepad ++中创建一个新的.txt文件(原作者文件是由我在别处找到的powershell命令生成的)然后复制将原始文件的内容放入新的.txt文件中,然后fetch工作。

原来的文件编码为UCS-2 Little Endian(如上所述),但UTF-8的默认编码有效。我没有必要改变行结尾。