2009-05-25 28 views

Respuesta

4

Utilicé la extensión hg mqueue para editar el historial. Parece que funcionó. Gracias a todos.

+1

ya, http: //mercurial.selenic. com/wiki/EditingHistory le permite volver atrás en sus revisiones y eliminar revisiones individuales o hacer cambios (eliminar contraseñas) en sus revisiones – xster

34

Mercurial trata muy duro de mantener sus datos seguros, por lo que generalmente no puede cambiar el historial.

Dicho esto, hay numerosas extensiones para Mercurial que le permiten cambiar fácilmente la historia de todos modos. Hay un page on the wiki about editing history. Esa página también explica las consecuencias.

En su caso específico, debe preguntarse si otros ya habrán retirado su conjunto de cambios. Si es así, incluso si lo elimina, seguirá existiendo en sus clones y será mejor que acepte el error.

Si decide eliminarlo, le sugiero que use hg clone para obtener una copia sin él. Esta es la forma segura ya que siempre dejará una copia de seguridad. Si empujado [z] al repositorio remoto:

[x] --- [y] --- [z] 

y ahora quiere eliminarlo, a continuación, iniciar sesión en el servidor y hacer

hg clone -r y repo repo-without-z 

Entonces repo-without-z contendrá todos changests hasta el [y] - es decir, [z] se habrán eliminado:

[x] --- [y] 

a continuación, puede seguir trabajando y empujar un nuevo conjunto de cambios:

[x] --- [y] --- [w] 

Si hubiera apretado el conjunto de cambios [z] y ahora ya tirar de [w] veré dos cabezas en el repositorio:

  [w] 
     /
[x] --- [y] --- [z] 

Esto no es peligrosa en sí misma - pero la gente que se sorprenda. Si elimino [z] de mi clon, terminaré con el mismo repositorio que usted. Pero, como se escribió anteriormente, esto podría ser poco práctico si tiene muchos usuarios.

También puede usar el MQ extension a tira el conjunto de cambios en el lugar. De esa forma no harás un nuevo clon.

Finalmente, si está seguro de que la inserción fue la última operación realizada en el servidor, entonces se puede usar hg rollback para eliminar la última transacción. Pero no haga esto si es el único que puede ingresar al repositorio, de lo contrario, podría terminar haciendo una transacción diferente.

Si el repositorio está en Bitbucket, entonces no puede iniciar sesión en el servidor. Pero Bitbucket recientemente ha agregado una funcionalidad de tira a su interfaz web. Busque "Administración del depósito" en la sección "Administrador".

+1

Gracias por su comentario. De hecho, estoy usando bitbucket, estaba tratando de eliminar una confirmación del repositorio bitbucket, pero parece que no es posible. Incluso usando strip, bitbucket me dice que estoy ocupando mucho espacio (debido a la guerra que cargué). –

+4

Sí, Bitbucket realiza una copia de seguridad de las revisiones eliminadas, y la copia de seguridad cuenta para su cuota :-( Puede eliminar el repositorio en Bitbucket, crearlo de nuevo con el mismo nombre y pulsar desde su clon local. –

+1

Mi comentario anterior ya no es válido, consulte la respuesta de [Jesper's] (http://stackoverflow.com/a/909290/110204) a continuación. –

13

Bitbucket le ofrece un paquete (copia de seguridad) al eliminar, y esto hace no cuenta contra su cuota. La razón por la que parece hacerlo, es solo porque no hemos invalidado la clave de caché que especifica cuánto espacio utiliza.

Esto es un error en nuestro sistema, y ​​se remediará.Hasta entonces, puede estar seguro de que el conjunto de cambios se ha eliminado y la copia de seguridad es gratuita :-)

+6

Nice Jesper, gracias por pasar por :-) –

1

que tenía un caso similar en el que yo quiero quitar una rama fusionada "A" de cambios de rama "Dev" de forma remota utilizando TortoiseHg:

  1. Crear sucursal AA de rama en rama padre de A; su origen
  2. Combine A en AA (directorio de trabajo) y asegúrese de que la opción: "Descartar todos los cambios de la otra revisión" esté marcada.
  3. Fusiona AA en la rama Dev (con un mensaje de confirmación que indica que se eliminaron los cambios de la rama A).

Verás que los cambios de la rama A ya no existen en Dev.

+1

Esto funcionó para mí, gran solución. Solo aclararía que para (2), creo que te refieres a "fusionar A en AA" y descartarlo. Eso es lo que hice de todos modos, y luego el paso 3 creó una buena confirmación que retiró todos los cambios no deseados. –

Cuestiones relacionadas