2010-10-16 9 views
11

Tengo un proyecto en Mercurial con un grupo de committers. Desafortunadamente, algunos de los committers han cambiado los nombres varias veces, p. primero fue "apodo", y luego se convirtió en "Nombre de Apellido", y luego algo más.Cómo lidiar con el cambio de nombre de committer en Mercurial

La mayoría de las herramientas de análisis de repositorio esperan que el committer tenga el mismo nombre en el transcurso del proyecto, así que idealmente cambiaría el nombre de committers de revisiones previas en nuestro repositorio principal y haría que todos hicieran una nueva clonación. ¿Es posible?

¿Hay alguna otra forma de solucionar este problema?

+5

Esperaría que la mayoría de la herramienta de análisis repo permitiera realmente un archivo de mapeo/alias para los nombres de los committers, el problema no es exclusivo de hg y es muy común. – tonfa

+0

Sí, a segunda tonfa, específicamente ¿qué herramientas de análisis de repositorio estás mirando? Todos los que he visto (abandono, actividad y gráfico de la wiki de mercurial) proporcionan una asignación fácil en el momento del análisis. Los diferentes nombres de committer son muy comunes ya que user @ host es un valor de nombre de usuario favorito. Será mejor que haga que su análisis sea más inteligente en lugar de su repositorio más uniforme, porque el repositorio volverá a divergir por su nombre de nuevo. –

+1

Solicite a los desarrolladores de Mercurial que proporcionen la función '.mailmap' para todos los comandos de búsqueda de historial, como en Git (consulte [git-shortlog] (http://www.kernel.org/pub/software/scm/git/docs/git- shortlog.html) manpage) ;-P –

Respuesta

19

Sí, es posible. Use el Convert extension y luego el hg convert del repositorio con los nombres incorrectos del nuevo repositorio con los nombres correctos y use un autormap. Hay muchas cosas que puedes lograr usando la extensión de conversión y la conversión de Mercurial a otro repositorio de Mercurial.

archivo Authormap, suponiendo Eric Hopper <[email protected]> es el nombre canónico para el autor:

Eric Hopper <[email protected]>=Eric Hopper <[email protected]> 
Eric M. Hopper <[email protected]>=Eric Hopper <[email protected]> 
Eric Hopper <[email protected]>=Eric Hopper <[email protected]> 

continuación:

hg convert -s hg -d hg --authormap authormap badnamesrepo goodnamesrepo 

Nota: que, si bien la conversión de un hg a un repositorio hg no siempre crear muchos nuevos conjuntos de cambios, en este caso, y serán equivalentes (pero diferentes de) conjuntos de cambios en el repositorio original. Esto significa que todo el mundo usando este repositorio va a tener que borrar los clones que tengan y buscar otros nuevos.

En el caso general, la conversión de un repositorio de hg a un repositorio de hg es probable que cree al menos unos nuevos conjuntos de cambios o no habría una razón para hacerlo. Y eso seguramente requerirá que todos destruyan todos sus clones y vuelvan a clonar.

Si su herramienta de análisis tiene la capacidad de reasignar nombres de autor, esa es probablemente la mejor manera de hacerlo. Pero eso no es lo que pediste, así que te di la respuesta que pediste. :-)

+8

Una advertencia ** muy ** importante: la conversión de hg * romperá * todos los clones que están allí ya que los hashes cambiarán, empujar/jalar ya no funcionará entre clones a menos que todos reclones. – tonfa

+1

tonfa: La pregunta sí incluía a todos haciendo una clonación nueva, por esta razón. –

+0

@tonfa - Sí, pensé en eso, pero el OP mencionó que todos tenían que obtener un clon nuevo, así que supuse que él estaba al tanto. Debería ponerlo en la respuesta, sin embargo, lectores tan incautos y sin cuidado en el futuro no obtienen resultados inesperados. – Omnifarious

Cuestiones relacionadas