我正试图将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
命令就如广告中所说的那样工作了。