将SVN存储库导入Git时,作者未定义

Gre*_*reg 26 git git-svn

我正在尝试将我们的SVN存储库导入Git.当我运行此命令时:

git svn --authors-file=/path/to/authors --trunk=trunk clone https://my-repo/project .
Run Code Online (Sandbox Code Playgroud)

或者这个命令:

svn2git https://my-repo/project --no-minimize-url -v --authors /path/to/authors
Run Code Online (Sandbox Code Playgroud)

两者都返回此错误:

Author: patrick  not defined in /path/to/authors file
Run Code Online (Sandbox Code Playgroud)

..但据我所知,我的作者文件没有​​错:

$ grep patrick /path/to/authors
patrick = Patrick <none@example.com>
Run Code Online (Sandbox Code Playgroud)

该错误直到达到修订版8700才会发生,所以它必须正确地抓取其他作者名称.

这可能会发生什么?谢谢.

Dan*_*mke 23

尝试在Windows上执行此操作时,我遇到了同样的问题.事实证明,我存储作者的文件的编码设置为UTF-8而不是没有BOM的UTF-8.由于"with BOM"版本在文件的开头添加了一些额外的字节,因此从未找到列表中的第一个作者.

  • 使用 BitBucket 迁移工具,自动生成authors.txt 文件。在您的回答和最初的问题之后 2 年多,我遇到了同样的问题。由于某种原因,我的文件被编码为 UTF16LE。在没有 BOM 的情况下将其更改为 UTf-8 就可以了,并且转换器正在运行 atm。谢谢! (2认同)
  • 在Windows上,可以使用Notepad ++将文件转换为不带BOM的UTF8。编码-&gt;以UTF-8编码(最简单的一个,就是没有BOM的东西)。 (2认同)

Osc*_*oya 6

我遇到过同样的问题。authors.txt的格式严格遵循form

svn name = user name &#8249;email&#8250;
Run Code Online (Sandbox Code Playgroud)

如:

cruise-control = Cruise Control &#8249;cruise-control@abc.com&#8250;
user1 = User1 Lastname1 &#8249;user1@abc.com&#8250;
user2 = User2 Lastname2 &#8249;user2@abc.com&#8250;
Run Code Online (Sandbox Code Playgroud)

例如,这种格式将不起作用:

user1 = user1@abc.com
Run Code Online (Sandbox Code Playgroud)


Ste*_*ane 5

我遇到了同样的问题,但原因实际上却大不相同:我使用Powershell从SVN中转储作者列表,但我没有意识到它将结果保存为UTF-16文件。

原来git(至少对于Windows 2.16.1版为git)至少无法使用UTF-16文件。将文件转换为UTF-8对我有用。

  • 完全一样,谢谢指出!使用“记事本&gt;文件&gt;另存为&gt;编码:UTF-8”或“记事本++&gt;转换&gt;转换为UTF-8”转换文件。 (2认同)

Gre*_*reg 2

有两个问题:

我通过为每个作者分配唯一的电子邮件地址解决了第一个问题。

此外,用户名是“patrick”。我不知道这是怎么发生的,但是通过使用 svnadmin 我能够将该昵称的所有实例更改为“patrick”。