从SVN转换到Git时,如何定义已定义的作者



我正试图将SVN存储库转换为Git,主要是试图将以下两个博客中的过程拼凑在一起:

约翰·阿尔宾·威尔金斯

Eelke Blok

这个StackOverflow帖子:

cmcginty

我创建了一个文件来将SVN用户映射到Git用户(Wilkins称之为authors-transform.txt,而Blok和'cmcginty'称之为users.txt(,尽管我不理解它的用途或外观。我用了威尔金斯的剧本

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" "}' | sort -u > authors-transform.txt

据我所知,我已经成功地完成了运行$ git svn fetch的过程。当我尝试这样做时,过程以错误结束

$ git svn fetch
...
Author: jimi@JH.EXPERIENCE.ORG not defined in authors-transform.txt file

从输出中还不清楚这是过程中的一个中断错误,但Blok认为这是一个错误。在这一点上,我应该";"修复";authors-transform.txt文件,但我不知道怎么做。这个作者在文件中:

jimi@JH.EXPERIENCE.ORG = jimi@JH.EXPERIENCE.ORG

我不能再向authors-transform.txt添加任何行,这将导致该用户在文件中比他已经包含的更多

我能找到的与本主题相关的其他StackOverflow问题只有这一个和这一个。它们提到了名称末尾的空格,我在authors-transform.txt中已经修复了这一点,以及authors-transform.txt的文件编码。很难想象编码是一个问题,因为我没有在Windows上,也没有使用任何其他会干扰编码的软件(我使用的是Ubuntu 20.04(,但在任何情况下,对于这些页面上的编码都没有可操作的建议。

我该怎么做才能让这个过程继续下去?

尝试在命令行选项中指定authors文件的路径:

git svn fetch --authors-file='/path/to/authors-transform.txt'

显然,git svn要求authors文件的行遵循特定的格式,这在我阅读的文档中并不清楚。这个SO的回答很好地解释了这一点。格式为

user1 = First Last Name <email@address.com>
user2 = First Last Name <email@address.com>
...

其中左手边的名字是SVN用户,右手边是Git用户的名字和Git注册的电子邮件。请注意,电子邮件地址必须用尖括号<>括起来。

我最密切地关注威尔金斯的博客文章,而我的浏览器或他的网络发布技术将尖括号<>视为标记,这样它们和它们的内容就不会出现在我的页面上,留下,这加剧了我的困惑

user1 = First Last Name
user2 = First Last Name
...

因此,我的authors文件中没有一个authors被正确定义,git svn停止并只抱怨它遇到的第一个SVN用户,即jimi@JH.EXPERIENCE.ORG

在将作者文件的每一行更正为使用正确的格式(将电子邮件放在尖括号中(后,$ git svn fetch命令就如广告中所说的那样工作了。

最新更新