Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SVN存储库导入Git时未定义作者_Git_Git Svn - Fatal编程技术网

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

将SVN存储库导入Git时未定义作者,git,git-svn,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 或此命令: git svn --authors-file=/path/to/authors --tru

我正在尝试将我们的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
或此命令:

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>
$grep patrick/path/to/authors
帕特里克=帕特里克
这个错误直到8700版本才发生,所以它必须正确地获取其他作者的名字


这到底是怎么回事?谢谢。

有两个问题:

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


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

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

我也有同样的问题。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

我看到了同样的错误,但原因不同。我将在这里发布我的解决方案作为“答案”,因为它可能是对发现此问题的其他人的答案(即使它不是OP问题的解决方案/答案):

我在项目签出时运行了
svn日志。但我只签出了
trunk
,所以只包括对trunk进行了更改的作者。这显然是大多数作者所做的,因此克隆会运行很长时间(超过90分钟),然后才会因错误而崩溃

由于检查整个项目根目录不是一个可行的选项(它有500多个分支和标记,一个转储超过600 GB),我发现我可以在远程repo上运行
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
svn日志-qsvn://server-url/path-to-project-root |awk-F'|''/^r/{sub(“^”,”,$2);sub(“$”,“,”,$2);print$2“=“$2”}”| sort-u>authors-transform.txt

查找作者姓名开头的空格,然后删除空格。如果这样做没有帮助,请尝试将作者的姓名移动到文件的顶部。

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


事实证明git(至少在windows 2.16.1版的git之前)无法使用UTF-16文件。将文件转换为UTF-8对我来说是个好办法。

我遇到了与问题相同的错误,我的解决方案是额外的换行符或回车符,这些字符没有显示在记事本中。我的记事本上显示的条目是
john=john
。虽然在Notepad++中打开时,我注意到它的格式如下:

john =
John <email@example.com>
约翰= 约翰

当我在记事本++中将其固定为一行后,它似乎对我来说工作正常。

我的文件中有两个用户,一个接一个,编码默认设置为Ucs-2 LE BOM。将编码改为UTF-8对我来说很有效。

小心你的端点。 我的文件是UTF-8格式的,但尽管我在Windows上,但结尾是“mac风格”


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

我想这可能是因为我使用了多个提交人的名字。我也有同样的问题。将多个帐户映射到同一电子邮件地址绝对不是问题。我有多个例子,SVN让作者在结尾有一个额外的空格。删除它可以使迁移顺利进行。使用BitBucket迁移工具,它会自动生成authors.txt文件。在你的答案和原来的问题出现两年多后,我也遇到了同样的问题。出于某种原因,我的文件被编码为UTF16LE。将其更改为不带BOM的UTf-8成功了,转换器正在运行atm。谢谢!在Windows上,可以使用记事本++将文件转换为UTF8,而不使用BOM表。编码->在UTF-8中编码(简单的一个,后面没有任何内容就是没有BOM的一个)。这对我很有用。我使用
visualstudio code
>单击右下角的
UTF-16
“使用编码保存”>
UTF-8
。我试图在
记事本上保存到
UTF-8
,但没有成功。完全一样,谢谢你指出!使用
记事本>文件>另存为>编码:UTF-8
记事本+++>转换>转换为UTF-8
转换文件。