7

我开始使用 mercurial 的 HgGit 扩展来在 GitHub 上拥有存储库的副本。几乎一切都运行良好,但在 GitHub 的提交信息中,我看到invalid-email-address (author)的不是我的用户名。在这种情况下,有没有办法正确显示用户名?

4

2 回答 2

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 上测试存储库时,

  1. 在 GitHub 上创建新的存储库,然后什么都不做!
  2. 将转换后的 repo 推送到 Git Hub。如果还不好,请从 GitHub 中删除 repo 并再次创建具有相同名称的 repo...
于 2011-12-19T11:48:15.513 回答
1

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 的整个历史记录)。

于 2011-08-04T14:05:08.927 回答