Es posible localmente, pero no globalmente, y cambia el ID de cada confirmación después del punto en que se agregó el archivo. Para que el cambio se mantenga, necesitarás acceso a cada copia del repositorio, especialmente las que se extraen o se expulsan.
Dicho esto, he seguido la secuencia Editing History descrita en el wiki de Mercurial para eliminar un archivo de uno de mis repositorios.Esta secuencia asume que la revisión 1301: 5200a5a10d8b añadió el archivo path/to/badfile.cfg
, que no se cambia de ninguna revisión posterior:
habilitar la extensión MQ en su .hgrc
:
[extensions]
mq =
extraer los cambios recientes de aguas arriba .
hg pull
importación de todo, desde la adición de archivos en adelante en MQ:
hg qimport -r 1301:tip
hg qpop -a
eliminar el archivo de la confirmación de que se ha añadido.
hg qpush 1301.diff
hg forget path/to/badfile.cfg
hg qrefresh
Convierta los parches en nuevas revisiones de Mercurial.
hg qpush -a
hg qfinish -a
Empuje las nuevas revisiones aguas arriba.
hg push -f
En el repositorio aguas arriba y cada una de las demás copiar, eliminar las viejas revisiones.
hg strip 5200a5a10d8b
Advertencia: Este paso puede destruir la obra, a menos que seas cuidadoso. Si alguien ha cometido algo desde la última vez que sacó de la corriente ascendente, tendrá que volver a calcular ese trabajo antes de pelar. Lamentablemente, la extensión rebase
no es útil aquí; tendrá que volver a usar MQ, convirtiendo los nuevos commit en parches que aplique en el nuevo consejo.
Buena suerte.
esta respuesta me ayudó, aunque no es "eliminar" sino convertir el repositorio a sí mismo (y se pierden todos los ID de conjuntos de cambios): http: // stackoverflow.com/a/22607889/714733 – jazzcat