2011-08-04 54 views
6

我開始使用HgGit的擴展名爲mercurial在GitHub上存儲庫的副本。幾乎所有的工作都很好,但是在GitHub的提交信息中,我看到的是invalid-email-address (author)而不是我的用戶名。在這種情況下是否有正確顯示用戶名的方法?HgGit:GitHub上的「invalid-email-address」

+0

在你的'hgrc' /'Mercurial.ini'中你的用戶名格式是什麼? –

+0

這只是「chersanya」,根據谷歌代碼的需要(主要回購在那裏)。 – aplavin

回答

1

在水銀甲用戶名是通常的形式:

Name <[email protected]> 

GIT中也通常設置了一個名稱和一個電子郵件地址的用戶。

我的猜測是,您可能需要在您的Mercurial配置文件中的用戶名中指定一個電子郵件地址,以便提交中的用戶名在github上正常工作。

此用戶名不需要與您在任何特定網站的用戶名相同,只是用於提交信息。如果要求它是相同的,你將如何能夠推動其他人完成的變更集?

例如,我的到位桶的用戶名比我對我提交的Mercurial用戶名不同的方式,以及我把我的到位桶的用戶名和密碼出回購的hgrc是到位桶通道的使用我的用戶的[auth]部分.hgrc/Mercurial.ini

[auth] 
bb.prefix = bitbucket.org 
bb.schemes = https 
bb.username = myBBusername 
bb.password = myBBpassword 

這裏把密碼是可選的(你會被提示),但也有用於存儲更安全的替代品,如keyring擴展。

但是,在現有變更集上更改用戶名有點晚(您必須重新編寫回購的整個歷史記錄)。

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="[email protected]" 
    an="peterpen" 
    am="[email protected]" 
fi 
if [ "$GIT_AUTHOR_NAME" = "peterpen" ] 
then 
    cn="peterpen" 
    cm="[email protected]" 
    an="peterpen" 
    am="[email protected]" 
fi 

export GIT_AUTHOR_NAME="$an" 
export GIT_AUTHOR_EMAIL="$am" 
export GIT_COMMITTER_NAME="$cn" 
export GIT_COMMITTER_EMAIL="$cm" 
' 

我親自一步在Cygwin的bash的窗口(執行從上述頁面的步驟命令其實我跑/修改/爲了重新運行一個腳本來簡化我的生活當然:-)的,),並使用Gi​​t GUI檢查結果...

當你準備在GitHub測試庫,

  1. 在GitHub上創建新的存儲庫,不要做任何事情!
  2. 將轉換的回購推送到Git Hub。 如果還有什麼不好的話,從GitHub中刪除回購,並再次使用相同的名稱創建回購...
+2

該鏈接已死亡 –

+0

我做了從mercurial存儲庫到github的代碼轉移,並且更新了GIT_COMMITTER_NAME和GIT_COMMITTER_EMAIL(除了GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL),我確實在github上的提交頁面上收到了所有提交的invalid-email-address –