SVN到Git迁移-未定义作者,但它是

zdwk9cvp  于 2023-09-29  发布在  Git
关注(0)|答案(5)|浏览(117)

以前也有人问过类似的问题(比如this),但答案并没有为我解决这个问题。我的作者档案看起来像这样:

cmannett85 = cmannett85 <cmannett85@###>
cbamber85 = cmannett85 <cmannett85@###>
www-data = cmannett85 <cmannett85@###>

我得到的错误是

Author: cmannett85 not defined in users.txt file

这个错误发生在大约第1500次提交时,其他作者条目都很好,所以条目的基本结构必须是正确的。我已经在SO上看到的大多数问题都是围绕SVN用户名有一个空格,但是正如你从粘贴的错误中看到的那样--没有多余白色。
我还认为可能是我将一个用户名Map为一个相同的用户名,所以我更改了Git用户名,但没有任何区别。我甚至尝试在Windows和Unix之间切换行结束,但仍然没有变化。
我使用以下命令调用该操作:

$ git svn clone https://subversion.assembla.com/svn/#### --authors-file=users.txt --no-metadata -s ####

我尝试删除--no-metadata参数,但没有区别。谁能看出我错在哪里?

更新

在懒獾的建议下,我跑了起来:

$ svn log --xml | grep author | sort -u | perl -pe 's/.>(.?)<./$1 = /'

它返回如下:

<author>cbamber85</author>
<author>cmannett85</author>
<author>www-data</author>
quhf5bfb

quhf5bfb1#

只是偶然发现了这个问题,并最终通过从UTF-8文件编码的authors.txt文件中剥离字节顺序标记来解决这个问题,从而使Linux将其视为纯文本ASCII文件而不是UTF-8。
由于我的文件在Windows上作为Powershell输出开始运行,因此更普遍的正确答案是简单文本永远不是简单文本,这使得Lazy Badger的答案是最好的,因为它避免了为这些差异而烦恼。

iszxjhcz

iszxjhcz2#

我发现了问题和解决方案:
我的author.txt被编码为UCS 2 Little Endian,在将其转换为ANSI后,文件大小下降到50%,并且可以工作。
文件大小从70 KB下降到35 KB,但我不认为这是解决方案。
My author.txt是使用Windows Active Directory中的powershell-script创建的。
我还将行尾从 CR LF 更改为 * LF *,但您提到,您也已经尝试过了。所以我认为这是一个字符编码的问题。

pgccezyw

pgccezyw3#

我确信-在克隆之前从纯SVN数据准备用户列表将是更安全的方法
例如:

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

9ceoxa924#

我刚刚遇到了这里描述的相同问题,结果是通过在notepad++中创建一个新的.txt文件(原始作者文件是由我在其他地方找到的powershell命令生成的),然后将原始文件的内容复制到新的.txt文件中,然后提取工作。
原来原来的文件编码为UCS-2小端(如上所述),但默认编码的UTF-8工作。我不需要改变行尾。

oxf4rvwz

oxf4rvwz5#

确保列表中的最后一个用户以LF(换行符)结尾!我的没有以LF结束,得到了同样的错误:Author: SYSTEM not defined in authors-transform.txt file这是在需要UTF8没有BOM,并使用LF而不是CRLF。如果列表中的最后一个用户不以LF结尾,也可能会出现此错误。

相关问题