No configuré el nombre de usuario en mi computadora de desarrollo e hice algunos commits. ¿Puedo cambiar retroactivamente el nombre de usuario para que quede claro quién cometió estos conjuntos de cambios?¿Puedo cambiar el nombre de usuario en un conjunto de cambios mercurial?
Respuesta
Si no ha publicado su repositorio, entonces esto no debería ser demasiado difícil. Debe utilizar el Convert extension en Mercurial, que le permitirá "filtrar" su repositorio existente para crear uno nuevo. el parámetro --authors le permite editar el autor para cada confirmación a medida que se filtra.
Si tiene publicó su repositorio, tenga en cuenta el impacto en sus usuarios, la wiki mercurial tiene algunos reasons not to edit history.
habilitar la extensión mediante la adición de estas líneas a su .hgrc:
[extensions]
hgext.convert=
escribir un archivo para asignar el nombre antiguo al nuevo nombre (authors.convert.list):
[email protected][email protected]
Ejecute la conversión:
hg convert --authors authors.convert.list SOURCE DEST
Acabo de comprobarlo, me funciona :).
Muy buena y completa respuesta. –
@Andrew Aylett: ¿cómo lo revisaste? "$ hg clone myWrongRep name", realizó los cambios y luego "$ hg convert --authors theFile myWrongLocalRep". Ahora genera el archivo ".-Hg" y el sitio dice que debe haber algo con "estado de hg" pero no puedo encontrar nada (aunque lo hay. Tuve el autor incorrecto con el nombre 'hh' así que creé una línea 'hh = hhh 'al archivo, pero después de presionar, ahora cambiar y después de "$ hg update" y "$ hg push", sin cambios. ¿Qué me falta? – hhh
Puede verificar los autores/verificar si los comandos funcionan con este comando '$ hg log --template '{author} \ n' | less', aún no lo tengo funcionando - sin entender el authormap - cosa. – hhh
He intentado un par de métodos diferentes (incluido el Convert Extension, que encontré creó un repositorio no relacionado). Las instrucciones de wiki de Mercurial para editing history using MQ fueron las que encontré más útiles. (Por supuesto, las advertencias habituales sobre la edición de cualquier públicamente conocida historia es una mala idea, pero local-changesets que solo usted está bien para editar).
Resumiré los pasos cruciales aquí y aclararé los mecanismos para cambiar al autor. Suponiendo que la primera confirmación errónea del autor está en la revisión BAD
(y no ha publicado sus cambios en ningún lugar por supuesto), debería poder hacer lo siguiente (supongo que está en la raíz del repositorio):
Activar MQ añadiendo esto a $ HOME/.hg/hgrc
[extensions]
hgext.mq=
Convertir los conjuntos de cambios recientes en parches:
$ hg qimport -r BAD:tip
(Ellos se pueden encontrar ahora en .hg/patches
)
"anular la aplicación" (todos los asumen que los parches han sido aplicados, y les inversa), para obtener su repositorio en el estado de la revisión antes de BAD
:
$ hg qpop -a
Si nos fijamos en sus parches, que' ll ver que el autor se codifica en una especie de línea de comentario en todos los parches:
$ grep User .hg/patches/*
.hg/patches/102.diff:# User Firstname Lastname <[email protected]>
Ahora usa tu búsqueda favorito/reemplazar herramienta para fijar los parches (estoy usando Perl aquí).Supongamos que usted desea que el nombre de comprometerse a ser [email protected]
:
$ perl -pi -e 's/f\.lastname\@oops\.wrongurl\.example\.com/f.lastname\@righturl.example.com/' .hg/patches/*.diff
Ahora compruebe que ha cambiado correctamente el nombre del autor, y volver a aplicar los parches:
$ hg qpush -a
luego convertir los parches aplicados al adecuado conjuntos de cambios:
$ hg qfinish -a
Y listo. Su repositorio todavía aparece como relacionado, por lo que no recibirá ninguna queja sobre el empuje.
Tengo "abortar: no puedo importar la revisión de combinación [Número de revisión] –
Trabajé para mí. Sin embargo, tuve que cambiar el estado de mis confirmaciones de" publicado "a" borrador "primero. – user2428118
Se necesitaba un'/'final antes del cierre citar, de lo contrario el comando 'perl' produjo un error' Reemplazo de sustitución no terminado en -e línea 1. De lo contrario perfecto, gracias! – ederag
He usado la extensión histedit
que me permitió cambiar el autor sin hacer nuevos repos como "convertir" o recurrir a "mq".
primer lugar, en el archivo de configuración de Mercurial, asegúrese de que su nombre de usuario está configurado correctamente y habilitar la extensión histedit:
[ui]
username = Your Name <[email protected]>
[extensions]
histedit =
Entonces, si desea cambiar la revisión 40, utilice:
hg histedit -r 40
En el archivo que aparece, en la línea correspondiente a la revisión 40, cambie la palabra pick
por edit
. Guarde y cierre el archivo.
Ahora, hg commit
. Tendrá que volver a ingresar su mensaje de compromiso y guardarlo.
Finalmente, hg histedit --continue
.
La confirmación aparecerá con su nuevo username
. Un efecto secundario es que la marca de tiempo de la confirmación también se actualiza.
Si usted tiene un conjunto de cambios saliente sola, no es una forma muy simple de hacer esto:
$ hg ci --amend --user "My Name <[email protected]>" -X "**"
La opción -X "**"
puede omitirse si usted no tiene cualquier cambio local.
Lo hizo trabajo! (Dios sabe lo que estaba haciendo :) –
- 1. Mercurial: etiquetar un conjunto de cambios particular
- 2. Cómo modificar un conjunto de cambios "público" en Mercurial
- 3. Mercurial: diffs en un conjunto de cambios particular?
- 4. Examinando un único conjunto de cambios en Mercurial
- 5. mercurial: prueba si una rama contiene un conjunto de cambios
- 6. Examinando un conjunto de cambios en HG
- 7. Mercurial: eliminar el conjunto de cambios de la rama remota
- 8. Mercurial: ¿Puedo cambiar el nombre de una sucursal?
- 9. ¿Determinando el conjunto de cambios 'activo' con Mercurial?
- 10. ¿Cómo puedo extraer todos los archivos modificados de un conjunto de cambios en Mercurial?
- 11. ¿Cómo puedo empujar/tirar un conjunto de cambios individual entre repositorios en Mercurial?
- 12. Deshacer una acción de mover/cambiar el nombre en mercurial?
- 13. Inyectar conjunto de cambios mercurial como información de versión en un ejecutable C
- 14. En mercurial, ¿cómo ver diff en un conjunto de cambios de combinación y un padre sin cambios del otro padre?
- 15. ¿Cómo se puede clonar un repositorio de Mercurial a partir de un conjunto de cambios específico?
- 16. Mercurial diff no funciona después de mover/cambiar el nombre
- 17. Cambiar autor en mercurial
- 18. ¿Cómo determinar en Mercurial, si el conjunto de cambios, especificado por revisión, ya ha sido injertado?
- 19. ¿Cómo puedo "cambiar" con Mercurial
- 20. Cómo mover un conjunto de cambios a una nueva rama en mercurial
- 21. Mercurial: ¿todos los archivos que cambiaron en un conjunto de cambios?
- 22. En Mercurial, ¿cómo puedo extraer los cambios de un solo archivo de un conjunto de cambios para aplicarlo a otra rama?
- 23. ¿Cómo puedo cambiar el nombre de un archivo en ASP.NET?
- 24. ¿Cambiar el nombre de usuario de Git en Xcode?
- 25. ¿Cómo puedo cambiar el nombre de un nodo jsTree?
- 26. Mercurial/TortoiseHG Merge Trunk Cambios en Branch
- 27. Mercurial (HG) parámetros de extracción: nombre de usuario y contraseña
- 28. ¿Puedo cambiar el nombre de `nohup.out`?
- 29. Fusionar solo un conjunto de cambios desde otra rama
- 30. En Subversion ¿puedo ser un usuario que no sea mi nombre de usuario?
Consulte el siguiente documento. Hay algunas desventajas en la reescritura del historial que se tratan en el documento, por lo que normalmente no se respetan. Sin embargo, parece ser posible. - [Editar historia] (http://www.selenic.com/mercurial/wiki/index.cgi/EditingHistory) –