2012-02-01 12 views
6

Por el momento estoy considerando la transición de la subversión a Mercurial en el trabajo, y como tal, el repositorio de Mercurial aún no se ha publicado.Editar el autor para conjuntos de cambios específicos

He utilizado el argumento authormap para transformar nuestros nombres de usuario al formato Mercurial, que fue bien.

Desafortunadamente, dos personas se han comprometido con el mismo nombre. El repositorio no es muy grande, por lo que me gustaría cambiar los autores para que coincidan con las personas adecuadas. Por ese motivo, me gustaría preguntar:

¿Hay alguna manera de cambiar el autor de un conjunto de cambios específico o una lista de conjuntos de cambios?

+0

Si tiene acceso al correo electrónico del autor para cada revisión en el repositorio SVN, ¿no podría usar la pareja (nombre, correo electrónico) en su autormap para la migración, generando un nombre de autor diferente en el repo de Mercurial? De lo contrario: http://stackoverflow.com/questions/732819/can-i-change-the-username-on-a-mercurial-changeset – VonC

+0

Desafortunadamente no, ambos han estado cometiendo bajo el mismo nombre de usuario (una de las iniciales de los usuarios) . Lo único que los diferencia es los archivos trabajados, y tal vez la dirección IP de los committers. – FrederikNS

+0

Eso parece complicado, entonces. – VonC

Respuesta

9

Puede usar la extensión incluida Mercurial Queues (MQ) para cambiar los autores del compromiso. Tenga en cuenta que MQ solo funcionará siempre que el historial sea lineal. Si hay ramas, primero debe volver a establecer una base para ellas en una rama lateral temporal y luego, después de editarlas, vuelva a establecerlas.

Primeros qimport los cambios hasta el primer conjunto de cambios que desea modificar:

hg qinit 
hg qimport -g -r <first-revnr>:tip 

A continuación, utilice qpop o qgoto para navegar a los respectivos conjuntos de cambios:

hg qgoto <revnr>.diff 

y luego usar qrefresh para cambiar la información del usuario en el conjunto de cambios actualmente activo:

hg qrefresh -u "Some User <[email protected]>" 

Puede verificar con hg log si el usuario se actualizó correctamente. Después de esto, repita para todos los otros conjuntos de cambios.

Cuando haya terminado, qpush parches y use qfinish para finalizar el repositorio.

hg qpush -a 
hg qfinish -a 
+0

Gracias, esto era lo que estaba buscando. – FrederikNS

+0

Tuve algunos problemas leves.Solo recuerda ejecutar una actualización 'hg update'. Lo hice en un repositorio limpio, sin archivos en la copia de trabajo, que produjo errores – FrederikNS

1

También podría utilizar el evolve extension. Después de configurar la extensión

hg amend -U && hg prev 

para una pila de confirmaciones y luego hg evolve --all al final.

Evolve presenta un meta-gráfico que indica qué cometido reemplaza a qué compromiso. Así que cuando hacemos hg amend -U un montón de veces, creamos confirmaciones con un autor diferente que reemplazó las confirmaciones anteriores. hg evolve --all utilizará la información de reemplazo para averiguar dónde mover confirmaciones que se basaron en nuestras confirmaciones preinversas.

Créditos a desarrolladores mercurial en IRC#mercurial.

Cuestiones relacionadas