HgGit:GitHub上的“invalid-email-address”

时间:2011-08-04 13:21:27

标签: git mercurial github hg-git

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

2 个答案:

答案 0 :(得分:2)

为了修复“无效电子邮件地址”问题,您必须在提交中找到旧的“git作者姓名”,并为提交设置“作者”和“提交者”的新名称和电子邮件地址在之前将新转换的存储库推送到GutHub。

使用“git filter-branch”命令完成此修复(搜索和替换...)。 你可能会在这里看到准备使用的例子:(现在已经死了?!)Mercurial to Git, solving "invalid-email-address"

[编辑:]由于上面的链接现在已经死了,我提供了下面的“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 ...

答案 1 :(得分:1)

Mercurial中的用户名通常为:

Name <email@domain.com>

Git通常也会为用户设置名称和电子邮件地址。

您可能需要在Mercurial配置中的用户名中指定一个电子邮件地址,以便提交中的用户名在github上正常工作

此用户名不需要与任何特定网站上的用户名相同,而是用于提交信息。如果它必须是相同的,你怎么能够推动其他人完成变更集?

例如,我的bitbucket用户名与我提交的Mercurial用户名不同,我将我的bitbucket用户名和密码保存在repo hgrc中的bitbucket路径之外的方式是使用{{1}我的用户[auth] / .hgrc部分:

Mercurial.ini

在此处输入密码是可选的(系统会提示您),但有更安全的替代方法可以存储密码,例如keyring扩展名。

但是,更改现有变更集的用户名有点晚了(你必须重新编写repo的整个历史记录)。