我开始使用 mercurial 的 HgGit 扩展来在 GitHub 上拥有存储库的副本。几乎一切都运行良好,但在 GitHub 的提交信息中,我看到invalid-email-address (author)
的不是我的用户名。在这种情况下,有没有办法正确显示用户名?
2 回答
为了解决“无效电子邮件地址”问题,您必须在提交中找到旧的“git 作者姓名”,并在推送新转换的存储库之前为提交设置“作者”和“提交者”的新名称和电子邮件地址到 GutHub。
此修复(搜索和替换...)是使用“git filter-branch”命令完成的。您可能会在这里看到准备使用的示例:(现在它已经死了?!)Mercurial to Git,解决“无效电子邮件地址”
[编辑:] 由于上面的链接现在已经失效,我在下面提供了“fix-user-email.sh”文件的示例。如您所见,这里作者姓名的两个变体被翻译成相同的有效 GIT 名称/电子邮件对:
git filter-branch --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_AUTHOR_NAME" = "peter.pen" ]
then
cn="peterpen"
cm="peterpen@example.com"
an="peterpen"
am="peterpen@example.com"
fi
if [ "$GIT_AUTHOR_NAME" = "peterpen" ]
then
cn="peterpen"
cm="peterpen@example.com"
an="peterpen"
am="peterpen@example.com"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
我亲自在 cygwin bash 窗口中逐步执行上述页面中的命令(实际上我运行/修改/重新运行了一个脚本以简化我的生活,当然:-))并使用 GIT-GUI 检查结果.. .
当您准备好在 GitHub 上测试存储库时,
- 在 GitHub 上创建新的存储库,然后什么都不做!
- 将转换后的 repo 推送到 Git Hub。如果还不好,请从 GitHub 中删除 repo 并再次创建具有相同名称的 repo...
Mercurial 中的用户名通常采用以下形式:
Name <email@domain.com>
Git 通常还为用户设置一个名称和一个电子邮件地址。
您可能需要在 Mercurial 配置中的用户名中指定一个电子邮件地址,以便提交中的用户名在 github 上正常工作。
此用户名不需要与您在任何特定网站上的用户名相同,它用于提交信息。如果要求相同,您将如何推动其他人完成的变更集?
例如,我的 bitbucket 用户名与我提交时的 Mercurial 用户名不同,并且我将 bitbucket 用户名和密码保留在 repo 中的 bitbucket 路径之外的hgrc
方法是使用[auth]
我的用户.hgrc
/部分Mercurial.ini
:
[auth]
bb.prefix = bitbucket.org
bb.schemes = https
bb.username = myBBusername
bb.password = myBBpassword
将密码放在这里是可选的(系统会提示您),但有更安全的替代方法来存储它,例如密钥环扩展。
但是,在现有变更集上更改用户名有点晚了(您必须重新编写 repo 的整个历史记录)。