Git SVN 作者文件的格式是什么?特别是对于像反斜杠或下划线这样的特殊字符,如何处理?

18

我正在尝试克隆Papercut,一款SMTP服务器仿真器

我正在使用svn log -q https://papercut.svn.codeplex.com/svn | grep -e '^r'| awk 'BEGIN {FS="|"};{print $2}'|sort|uniq获取SVN作者列表,结果如下:

RNO\_MCLWEB
SND\krobertson_cp

我创建了一个名为 authors.txt 的文件,其中使用了“SVN_User = UserName ”的格式,但是当我运行时。
git svn clone --no-metadata -A authors.txt https://papercut.svn.codeplex.com/svn papercut

它抱怨说 "在 authors.txt 文件中未定义作者:RNO_MCLWEB"

我尝试在名称前加上反斜杠 '\' 和下划线 '_' 来转义它们,并添加引号,但都没有起作用。

我找不到比 SVN_User = UserName <Email> 更好的描述 authors.txt 文件格式的说明。


输入 git svn clone -help 并查找 -A 选项,以获取有关 authors.txt 文件的良好描述。 - Leniel Maccaferri
4个回答

28

我不想成为"那个人",但我刚刚尝试了一下,它对我来说运行得很好。这是我使用的作者文件的副本:

RNO\_MCLWEB = Ronald McDonald <dude@example.com>
SND\krobertson_cp = Some Guy <someone@example.com>

不过,我生成作者名称的方法与您略有不同,我是按照这些说明进行的。我的具体命令是:

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

我也在使用Git 1.6.6.1(不确定是否相关,但你永远不知道)。

我注意到当我使用你的管道获取SVN作者时,在生成的文件中它们的SVN用户名前面有空格(即每行第一列有一个空格)。不知道这是否有影响。


第一次创建authors.txt时,我没有像a@b.com这样为电子邮件地址添加字符串,只是<MCLWEB>。我想那就是问题所在,因为具有您展示的文本的authors.txt可以克隆而无需任何问题(git 1.6.5.1)。我以为我已经尝试过正确的电子邮件地址,但显然不是。无论如何,谢谢。 - jasonpenny
1
正则表达式不正确 - 它需要匹配多于1个字符。已修复:'s/.*>(.*?)<.*/$1 = /' - CoffeeMonster

16

我遇到了同样的问题,不过是针对用户 apache。 在作者文件中,我有这样一行:

apache = Apache
或者
apache = Apache <>

但是当我将它设置为

apache = Apache <noreply@something.com>

我的仓库正常地开始克隆了。 请确保您正确设置了所有作者的名称和电子邮件,格式如下:

svn_user_name = JustNameInGit <obligatory@email.com>

每个字段都是必填项!!!


请参考这个问题以获取类似的讨论。 - eykanal
注意到每个字段都是必填的对我很有帮助。Eykanal的链接表明这并不是必须的,在他提供的链接中似乎是真实的,但在SVN导入过程中并非如此。 - vmrob

3
我使用了以下代码,它可以帮助跳过带有“授权”等单词的消息。
svn log --xml | grep /author | sort -u | perl -pe 's/.>(.?)<./$1 = /' > users.txt

3

我曾遇到过这个问题,最终发现是我的示例文件编码有误。请确保文本文件保存为UTF-8格式。

你可以在任何好的文本编辑器中进行操作(例如notepad++的编码菜单)


这对我也解决了问题。该文件最初是由Atlassian SVN迁移脚本在Windows 10上的PowerShell中生成的,它是UTF-16格式。我将其保存为UTF-8格式,然后它就可以工作了。 - oryan_dunn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接