GitHubにリポジトリのコピーを作成するために、MercurialにHgGit拡張機能を使用し始めました。ほとんどすべてが正常に機能していますが、GitHubのコミット情報でinvalid-email-address (author)は、ユーザー名の代わりに表示されます。この場合、ユーザー名を正しく表示する方法はありますか?
2 に答える
「invalid-email-address」の問題を修正するには、コミットで古い「git author names」を見つけ、新しく変換されたリポジトリをプッシュする前に、コミットの「Author」と「Committer」の新しい名前とメールアドレスを設定する必要がありますGutHubへ。
この修正(検索と置換...)は、「gitfilter-branch」コマンドを使用して行われます。ここですぐに使用できる例が表示される場合があります:(今は死んでいますか?!)Mercurial to Git、「invalid-email-address」を解決します
[編集済み:]上記のリンクは現在無効になっているため、以下に「fix-user-email.sh」ファイルの例を示します。ご覧のとおり、ここでは作成者名の2つのバリエーションが同じ有効な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で新しいリポジトリを作成し、何もしません。
- 変換されたリポジトリをGitハブにプッシュします。まだ問題がある場合は、GitHubからリポジトリを削除し、同じ名前のリポジトリを再度作成してください...
Mercurialのユーザー名は通常、次の形式です。
Name <email@domain.com>
Gitは通常、ユーザーの名前と電子メールアドレスで設定されます。
コミットのユーザー名がgithubで正しく機能するように、Mercurial構成のユーザー名に電子メールアドレスを指定する必要があります。
このユーザー名は、特定のWebサイトのユーザー名と同じである必要はありません。コミット情報用です。同じである必要がある場合、他の誰かが行ったチェンジセットをどのようにプッシュできるでしょうか。
たとえば、私のビットバケットユーザー名はコミットでのMercurialユーザー名とは異なり、リポジトリ内のビットバケットパスからビットバケットユーザー名とパスワードを除外する方法は、ユーザーのセクションhgrcを使用することです/ :[auth].hgrcMercurial.ini
[auth]
bb.prefix = bitbucket.org
bb.schemes = https
bb.username = myBBusername
bb.password = myBBpassword
ここにパスワードを入力することはオプションです(プロンプトが表示されます)が、キーリング拡張機能など、パスワードを保存するためのより安全な代替手段があります。
ただし、既存のチェンジセットのユーザー名を変更するのは少し遅れます(リポジトリの履歴全体を書き直す必要があります)。