2011-08-04 22 views
6

Empecé a usar la extensión HgGit para mercurial para tener una copia del repositorio en GitHub. Casi todo está funcionando bien, pero en la información de commit en GitHub veo invalid-email-address (author) en lugar de mi nombre de usuario. ¿Hay alguna forma de mostrar el nombre de usuario correctamente en este caso?HgGit: "dirección de correo electrónico no válida" en GitHub

+0

¿Cuál es el formato de su nombre de usuario en 'hgrc' /' Mercurial.ini'? –

+0

Es solo "chersanya", según sea necesario para Google Code (el repositorio principal está allí). – aplavin

Respuesta

1

Un nombre de usuario en Mercurial suele ser de la forma:

Name <[email protected]> 

Git también normalmente se configura con un nombre y una dirección de correo electrónico para el usuario.

Supongo que probablemente necesite especificar una dirección de correo electrónico en su nombre de usuario en su configuración de Mercurial para que el nombre de usuario en las confirmaciones funcione correctamente en github.

No es necesario que este nombre de usuario sea igual a su nombre de usuario en ningún sitio web en particular, es para información de compromiso. Si se requiriese que fuera el mismo, ¿cómo podría alguna vez ser capaz de impulsar conjuntos de cambios hechos por otra persona?

Por ejemplo, mi bitbucket nombre de usuario es diferente a mi nombre de usuario Mercurial en mis confirmaciones, y la forma en que mantener mi nombre de usuario y contraseña bitbucket fuera de los caminos Bitbucket en la repo hgrc es utilizar la sección [auth] de mi usuario .hgrc/Mercurial.ini:

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

Poner aquí la contraseña es opcional (se le pedirá), pero hay alternativas más seguras para su almacenamiento, tales como la extensión keyring.

Sin embargo, es un poco tarde para cambiar el nombre de usuario en los conjuntos de cambios existentes (tendrías que volver a escribir el historial completo del repositorio).

2

Para solucionar el problema de "dirección de correo electrónico no válida", debe buscar los "nombres de autor de git" anteriores en commits y establecer nuevos nombres y direcciones de correo electrónico del "Autor" y "Committer" para los commits antes empuja el repositorio recién convertido a GutHub.

Esta corrección (buscar y reemplazar ...) se realiza mediante el comando "git filter-branch". Puede ver aquí el ejemplo listo para usar: (¿ahora está muerto ?!) Mercurial to Git, solving "invalid-email-address"

[Editado:] Como el enlace anterior está muerto, proporciono mi ejemplo del archivo "fix-user-email.sh" abajo. Como yo puede ver, aquí dos variantes de un nombre de autor están siendo traducidos a la misma validez par nombre GIT/e-mail:

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" 
' 

personalmente ejecutan los comandos procedentes de la etapa página mencionada a paso en la ventana de fiesta cygwin (de hecho, me encontré/modificado/re-corrió una secuencia de comandos con el fin de simplificar mi vida, por supuesto :-)) y comprobar los resultados usando GIT-GUI ...

Cuando esté listo para poner a prueba repositorio en GitHub,

  1. Crear nuevo repositorio en GitHub y no hacer nada con él!
  2. Envíe el repositorio convertido al Git Hub. Si algo no está bien aún, elimine el repositorio de GitHub y vuelva a crear el repositorio con el mismo nombre ...
+2

Ese enlace está muerto –

+0

Hice la transferencia de código desde el repositorio de mercurial a github y sin actualizar de GIT_COMMITTER_NAME y GIT_COMMITTER_EMAIL (además de GIT_AUTHOR_NAME y GIT_AUTHOR_EMAIL) Recibo dirección de correo electrónico no válida para todas las confirmaciones en la página de commits en github –

Cuestiones relacionadas