HgGit: «неверный адрес электронной почты» на GitHub - PullRequest
7 голосов
/ 04 августа 2011

Я начал использовать расширение HgGit для Mercurial, чтобы иметь копию репозитория на GitHub.Почти все работает хорошо, но в информации о коммитах на GitHub я вижу invalid-email-address (author) вместо моего имени пользователя.Есть ли способ правильно отобразить имя пользователя в этом случае?

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Чтобы устранить проблему «неверный адрес электронной почты», вы должны найти старые «имена авторов git» в коммитах и ​​установить новые имена и адреса электронной почты «Автор» и «Коммиттер» для коммитов до вы отправляете недавно преобразованный репозиторий в GutHub.

Это исправление (поиск и замена ...) выполняется с помощью команды "git filter-branch".Вы можете увидеть готовый пример здесь: (теперь он мертв ?!) Mercurial to 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,

  1. Создайте новый репозиторий на GitHub и ничего с ним не делайте!
  2. Выдвиньте конвертированный репозиторий на Git Hub.Если что-то не очень хорошо, удалите репо из GitHub и снова создайте репо с тем же именем ...
1 голос
/ 04 августа 2011

Имя пользователя в 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

Вводить пароль здесь необязательно(вам будет предложено), но есть и более безопасные альтернативы для его хранения, такие как расширение keyring .

Однако уже немного поздно менять имя пользователя в существующих наборах изменений (вам придется переписать всю историю репо).

...