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

pxy2qtax  于 2022-11-20  发布在  Git
关注(0)|答案(9)|浏览(148)

我正在尝试将我们的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之前不会发生该错误,因此它必须正确地获取其他作者的姓名。
这到底是怎么回事?谢谢。

332nm8kg

332nm8kg1#

我在Windows上尝试执行时也遇到了同样的问题。结果是我存储作者的文件的编码被设置为UTF-8,而不是不带BOM的UTF-8。由于“带BOM”版本在文件的开头添加了一些额外的字节,列表中的第一个作者从未被找到。

46qrfjad

46qrfjad2#

我也遇到了同样的问题,但原因实际上是相当不同的:我使用Powershell从SVN转储作者列表,我没有意识到它将结果保存为UTF-16文件。
结果发现git(至少在windows 2.16.1版之前)无法使用UTF-16文件,而将文件转换为UTF-8就帮了我大忙。

shyt4zoc

shyt4zoc3#

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

格式

7xzttuei

7xzttuei4#

我看到了同样的错误,但原因不同。我将把我的解决方案作为“答案”贴在这里,因为它可能是找到这个问题的其他人的答案(即使它不是OP的问题/问题的解决方案/答案):
我在项目 checkout 时运行了svn log。但是我只 checkout 了trunk,所以只有那些提交了对trunk的修改的作者才被包括在内。这显然是大多数作者,所以克隆将运行很长时间(超过90分钟),然后它会因为错误而崩溃。
由于 checkout 整个项目根目录不是一个可行的选项(它有超过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
ippsafx7

ippsafx75#

有 两 个 问题 :
我 通过 给 每个 作者 分配 唯一 的 电子 邮件 地址 解决 了 第 一 个 问题 。
还有 , 用户 名 是 " patrick " 。 我 不 知道 这 是 怎么 发生 的 , 但 通过 使用 svnadmin , 我 能够 将 该 昵称 的 所有 示例 都 改 为 " patrick " 。

pnwntuvh

pnwntuvh6#

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

ssm49v7z

ssm49v7z7#

我遇到了与问题相同的错误,我的解决方案是额外的换行符或回车符,这些字符在记事本中没有显示。我有一个条目john = John <email@example.com>,它在记事本中显示得很好。尽管在记事本++中打开时,我注意到它的格式如下:

john =
John <email@example.com>

当我在Notepad++中将其固定为单行后,它似乎对我来说工作得很好。

vfh0ocws

vfh0ocws8#

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

jtoj6r0c

jtoj6r0c9#

小心你的尾行。我的文件是UTF-8格式的,但是尾行是“Mac风格”的,虽然我在Windows上。
现在,具有正确的结束行(cr + lf)的文件被接受

相关问题