una subir renombrar remoto remota rama quitar pararse origin nombre eliminar como mercurial branch dvcs

mercurial - subir - renombrar rama remota



Mercurial: ¿Puedo renombrar una rama? (5)

Ahora tenemos una rama "stiging", donde "staging" parece ser un ajuste semántico mucho mejor. ¿Cuál es una buena estrategia para manejar esto?


Esto modifica el historial y es solo para usuarios avanzados de Mercurial. No hagas esto si no sabes lo que eso significa.

Si la rigidez es solo local, puede cambiarla a estadificación con una combinación de graft y strip . Comience actualizando el conjunto de cambios del antepasado en el que se había divergido la detención. Cree la rama de la puesta en escena e injerta cada compromiso desde la colocación hasta la puesta en escena. La puesta en escena ahora debe ser una copia de la pisada. Por último, destruye el stiging despojando su primer commit.

hg update {SHA-1 of the ancestor changeset} hg branch staging hg graft {first changeset in stiging} ... {stiging head-1} {stiging head} hg strip {first changeset in stiging} hg push --new-branch


Haz una nueva rama llamada "puesta en escena" y olvida la otra ...


Para futuros lectores: con la extensión de rebase , puede crear una nueva rama con el mismo padre como stiging y mover todo el historial de la rama a ésta, como esto:

hg update -r "parents(min(branch(''stiging'')))" hg branch staging hg commit hg rebase --source "min(branch(''stiging''))" --dest staging

Esto supone que stiging tiene un solo padre. Por supuesto, puedes usar números de revisión explícitos.

Nota 1: Si la división de stiging incluye la fusión con otras ramas, creo que esto las preservará, siempre y cuando la staging y la stiging tengan el mismo padre. Pero sin duda lo volvería a comprobar.

Nota 2: Dado que esto edita el historial, la rama antigua simplemente no desaparecerá de los repositorios clonados (consulte la documentación de rebase ). A menos que todos puedan clonar de nuevo, puede que no sea una solución muy práctica para un grupo grande.

Note3 / Edit (cortesía de @JasonRCoombs): Ahora que las phases son estándar en mercurial, rebase rechazará modificar los conjuntos de cambios que ya se han enviado. Puede engañarlo cambiando la fase a borrador (con hg phases ), o dejar que la rama antigua permanezca donde está, y simplemente hacer una copia con el nombre correcto (por ejemplo, con `hg rebase --keep '').


Si tiene cambios en él, entonces tendrá que usar la extensión de conversión con un mapa de sucursal para cambiarle el nombre. Todo el mundo tendrá que clonar el nuevo repositorio o quitar la rama antigua.


Actualiza a la rama de stiging y crea una nueva rama a partir de ella. Luego cierra la rama vieja.

En resumen:

hg update stiging hg branch staging hg commit -m"Changing stiging branch to staging." hg update stiging hg commit --close-branch -m"This was a typo; use staging instead." hg push --new-branch