2010-04-23 21 views
5

I comprometidos(no presionado) una gran cantidad de archivos de forma local (incluyendo la eliminación de archivos binarios & añadiendo ...) y ahora cuando intento que se necesita mucho tiempo para empujar. De hecho, arruiné mi historial de reportes locales.¿Cómo elimino definitivamente (borrado) los archivos del historial?

¿Cómo puedo evitar este error en el futuro? ¿Puedo transformar un conjunto de revisión local 1-> 2-> 3-> 4 en 1-> 2 siendo 2 la revisión final del clon local?

editar: desde que tenía prisa comencé un nuevo repositorio remoto desde cero con la revisión 4. En el futuro iré con la respuesta marcada, ya que parece más fácil, pero buscaré otras soluciones para ver la verdad. Thx por su apoyo.

Respuesta

1

Mercurial history is inmutable, no se puede eliminar con las herramientas normales. Puede, sin embargo, crear una nueva operación sin esos archivos:

$ hg clone -r 1 repo-with-too-much new-repo 

que toma sólo revisiones cero y uno de la vieja repo y las pone en una nueva operación. Ahora copie los archivos de la revisión cuatro en el nuevo repositorio y confirme.

Esto elimina esos intercambios intersticiales, pero cualquier repositorio que tengas en la naturaleza todavía los tiene, así que cuando los recuperes pull, los recuperarás.

En general, una vez que ha pulsado un conjunto de cambios está disponible y, a menos que pueda hacer que todos los clonados lo eliminen y vuelvan a colgar, no tiene suerte.

2

No está claro por su pregunta si esos cambios se presionaron. Si todavía son locales, puede deshacerse de ellos más o menos fácilmente. convert es una opción. También puede usar MQ (colas mercuriales). Consulte el artículo de la wiki EditingHistory para obtener una explicación detallada. Recomienda que MQ sea el enfoque más simple.

Para evitar este tipo de errores, probablemente debería añadir un gancho para rechazar 'malo' se compromete, considerando que se puede describir mediante programación;)

+0

que utilizan mercurio para almacenar la base de datos de mi solicitud, por lo que sólo .hg ignoró todos los bits del DB y solo cometió un jar. – amirouche

Cuestiones relacionadas