HgGit: "неверный адрес электронной почты" на GitHub
Я начал использовать расширение HgGit для Mercurial, чтобы иметь копию репозитория на GitHub. Почти все работает хорошо, но в коммитах информацию на GitHub вижу invalid-email-address (author)
вместо моего имени пользователя. Есть ли способ правильно отобразить имя пользователя в этом случае?
2 ответа
Имя пользователя в Mercurial обычно имеет вид:
Name <email@domain.com>
Git также обычно настраивается с именем и адресом электронной почты для пользователя.
Я предполагаю, что вам, вероятно, нужно указать адрес электронной почты в вашем имени пользователя в конфигурации Mercurial, чтобы имя пользователя в коммитах корректно работало на github.
Это имя пользователя не обязательно должно совпадать с вашим именем пользователя на любом конкретном веб-сайте, оно предназначено для информации о коммите. Если бы требовалось быть таким же, как вы могли бы когда-либо продвигать изменения, сделанные кем-то другим?
Например, мое имя пользователя Bitbucket отличается от моего имени пользователя Mercurial в моих коммитах и от того, как я храню свое имя пользователя и пароль Bitbucket вне путей Bitbucket в репозитории. hgrc
это использовать [auth]
раздел моего пользователя .hgrc
/Mercurial.ini
:
[auth]
bb.prefix = bitbucket.org
bb.schemes = https
bb.username = myBBusername
bb.password = myBBpassword
Размещение пароля здесь не является обязательным (вам будет предложено), но есть более безопасные альтернативы для его хранения, такие как расширение набора ключей.
Однако уже немного поздно менять имя пользователя на существующих наборах изменений (вам придется переписать всю историю репо).
Чтобы исправить проблему "invalid-email-address", вы должны найти старые "git author names" в коммитах и установить новые имена и адреса электронной почты "Author" и "Committer" для коммитов, прежде чем отправлять только что преобразованный репозиторий. GutHub.
Это исправление (поиск и замена...) выполняется с помощью команды "git filter-branch". Вы можете увидеть готовый пример здесь: (теперь он мертв?!) Mercurial для Git, решая "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,
- Создайте новый репозиторий на GitHub и ничего не делайте с ним!
- Передвиньте конвертированный репо в Git Hub. Если что-то не очень хорошо, удалите репо из GitHub и снова создайте репо с тем же именем...