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

时间:2012-06-14 16:14:45

标签: git git-svn

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

git svn --authors-file=/path/to/authors --trunk=trunk clone https://my-repo/project .

或此命令:

svn2git https://my-repo/project --no-minimize-url -v --authors /path/to/authors

两者都返回此错误:

Author: patrick  not defined in /path/to/authors file

..但据我所知,我的作者档案没有错:

$ grep patrick /path/to/authors
patrick = Patrick <none@example.com>

该错误在达到修订版8700之前不会发生,所以它必须正确地抓取其他作者名称。

这可能会发生什么?感谢。

8 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:3)

我有同样的问题。 authors.txt的格式严格,格式为

svn name = user name &#8249;email&#8250;

如:

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;

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

user1 = user1@abc.com

答案 2 :(得分:2)

有两个问题:

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

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

答案 3 :(得分:1)

我遇到与问题相同的错误,因为我的解决方案是额外的换行符或回车符未显示在记事本中。我的条目john = John <email@example.com>在记事本中表现得很好。虽然在Notepad ++中打开时我注意到它的格式如下:

john =
John <email@example.com>

我在Notepad ++中将其修改为单行后,它似乎对我来说很好。

答案 4 :(得分:1)

我在文件中有2个用户,一个又一个,并且编码默认设置为Ucs-2 LE BOM。将编码更改为UTF-8对我有用。

答案 5 :(得分:0)

我看到同样的错误,但原因不同。我会在此处发布我的解决方案作为回答&#34;,因为它可能是其他发现此问题的人的答案(即使它不是OP&#39的解决方案/答案) ; s问题/问题):

我在项目结帐时运行svn log。但是我只检查过trunk,所以只包括已经提交更改为trunk的作者。这显然是大多数作者,因此克隆会在错误崩溃之前运行很长时间(超过90分钟)。

检查整个项目的根目录是不可行的选项(它有超过500个分支和标签,转储超过600 GB),我发现我可以运行svn log在这样的远程回购:

svn log -q svn://server/path-to-project-root

实际命令也对输出进行了一些过滤和格式化:

svn log -q svn://server-url/path-to-project-root | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt

答案 6 :(得分:0)

在作者姓名的开头查找任何空格并删除空格。如果这没有用,请尝试将作者姓名移到文件顶部。

答案 7 :(得分:0)

注意你的尾线。 我的文件是 UTF-8,但虽然我在 Windows 上,但结尾是“mac 风格”。

现在,有了好的结尾(cr + lf),文件被接受了