versiones tipos tener tag sistema sirve qué proyecto podemos para nuestros nos mayor herramienta hacer existen etiquetas cuando creamos control centralizado mercurial strip

mercurial - tipos - ¿qué herramienta podemos hacer para tener un mayor control de nuestros proyecto en github?



¿Se pueden reflejar los cambios realizados por la tira en el repositorio público? (4)

Digamos que tengo esto:

hg clone public_repo my_repo touch a b c d hg add . hg commit -m a a hg commit -m b b hg commit -m c c hg commit -m d d hg push # let''s say revX is the revision that added a hg strip revX

En la historia de mi repositorio, los commits se han ido. Sin embargo, si trato de hacer un push después de la tira, me dice que no changes found . ¿Se puede aplicar la tira al repo público?

EDITAR: la pregunta es simplemente hipotética :). No estoy en esta situación, solo pensé que sería interesante descubrir cómo funciona esto.


La forma correcta y segura de eliminar los cambios no deseados que llegaron a la naturaleza es hg backout .


Necesitas ejecutar hg strip allí. Si se trata de un repositorio bitbucket, puedes hacerlo desde el panel de administración. Si no, SSH.


Esto no es posible. También tiene que quitarle el depósito público.

hg strip solo quita changesets. No realiza una operación de "adición" que podría ser presionada.

En el ejemplo exacto que usted proporciona, puede simplemente hg rollback en el repositorio público.


Déjame pretender que estás haciendo una pregunta ligeramente diferente: he eliminado parte de mi historial de repositorios, ¿cómo propago este cambio a los repositorios de otros desarrolladores?

Mercurial no ofrece una forma de propagar el stripping de la misma forma en que se propaga agregando conjuntos de cambios. Entonces tienes que inventar tu propio camino.

Bitbucket, por ejemplo, tiene una lista de actualizaciones (en la página de resumen repo, si mi memoria me sirve). Si haces una tira, Bitbucket muestra algo como esto:

El conjunto de cambios 12345abcdef fue eliminado del repositorio, por favor ejecute hg strip 12345abcdef localmente.

Cuando tuvimos que propagar la eliminación de parte de una antigua sucursal en nuestra tienda, esto es lo que hicimos:

  1. Despojado los conjuntos de cambios en el servidor.
  2. Creé un archivo por lotes llamado strip.bat en la rama default del repositorio que contiene el comando que ejecutaremos en el servidor, es decir, hg strip 1234567890 .
  3. Le dije a todos que cuando no pueden presionar porque "push crea nuevas cabezas remotas" sin motivo aparente, esto significa que deben ejecutar strip.bat .

En caso de que necesitemos quitar algo nuevamente, simplemente agregamos otra hg strip en el archivo por lotes.

PD Sí, es mejor no desforrar, por ejemplo, usar la reversión para confirmar los conjuntos de cambios inversos. A veces esa no es una opción: si confundiste por error la rama a en la rama b cuando querías la combinación b en a , estás atrapado . Incluso si deshace el conjunto de cambios de fusión en la feature , los conjuntos de cambios fusionados de a ya están marcados como fusionados, y le resultará difícil realizar otra combinación de estas ramas.