Ahora tenemos una rama "stiging", donde "escenificación" parece ser un ajuste semántico mucho mejor. ¿Cuál es una buena estrategia para manejar esto?Mercurial: ¿Puedo cambiar el nombre de una sucursal?
Respuesta
Actualiza a la rama stiging
y crea una nueva bifurcación. Luego cierra la vieja rama.
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
Hacer una nueva rama llamada "puesta en escena" y olvidarse de la otra ...
+1 eso es lo que haría. Los viejos conjuntos de cambios seguirán teniendo el antiguo nombre de la rama, pero los nuevos tendrán el nuevo nombre de la rama. – barjak
Si tiene conjuntos de cambios en él, entonces usted tendrá que utilizar el convert extension con un branchmap para cambiar su nombre. Todo el mundo tendrá que clonar el nuevo repositorio o quitar la vieja rama.
Para los futuros lectores: Con la extensión rebase
, se puede hacer una nueva rama con el mismo padre que stiging
y mover toda la historia de la rama a la misma, así:
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 solo un padre. Por supuesto, puedes usar números de revisión explícitos en su lugar.
Nota 1: Si la rama stiging
incluye fusiones con otras ramas, yo creo que esto preservarlos, siempre y cuando staging
y stiging
tienen el mismo padre. Pero ciertamente lo verificaría dos veces.
Nota 2: Dado que esto edita el historial, la antigua rama no desaparecerá simplemente de los repositorios clonados (consulte la documentación 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 phases son estándar en mercurial, rebase
se rehusará a modificar los conjuntos de cambios que ya se han insertado. Puede engañar cambiando la fase a borrador (con hg phases
), o deje que la rama antigua permanezca donde está, y simplemente haga una copia con el nombre adecuado (por ejemplo, con `hg rebase --keep ').
+1 para equipos pequeños en los que puede forzar a los usuarios a clonar esta es una buena idea, o use' hg convert' en su lugar. – hochl
Con las últimas versiones de Mercurial, el comando rebase fallará con "can not rebase changesets inmutables" si los cambios que se van a mover son "públicos". O oblígalos a que sean borradores (con hg phases) o pasen '--keep' al comando rebase, que copiará en lugar de mover los cambios. –
En el paso 4: 'abortar: no se puede volver a establecer el conjunto de cambios inmutables 11b1e2b7dc4f'. Tenga en cuenta que he injertado changesets de otra rama en esta. Además de eso, está dividido y se fusiona gratis. –
Esto modifica el historial y es solo para usuarios avanzados de Mercurial. No hagas esto si no sabes lo que eso significa.
Si el stiging es solo local, puede cambiarlo por una combinación de graft y strip. Comience por actualizar al conjunto de cambios antecesor donde divergió el stiging. Crea la rama de etapas e injerta cada confirmación desde stiging a staging. La estadificación debería ser ahora una copia de stiging. Por último, destruye el stiging eliminando 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
- 1. Movimiento mercurial cambia a una nueva sucursal
- 2. Deshacer una acción de mover/cambiar el nombre en mercurial?
- 3. Accidentalmente trabajando en la sucursal con nombre incorrecto en Mercurial
- 4. ¿Cómo puedo "cambiar" con Mercurial
- 5. Mercurial diff no funciona después de mover/cambiar el nombre
- 6. Mercurial: ¿Cómo cambiar a una rama con nombre si una etiqueta tiene el mismo nombre?
- 7. Cambiar autor en mercurial
- 8. ¿Puedo cambiar el nombre de usuario en un conjunto de cambios mercurial?
- 9. Subversion - Sucursal de una sucursal
- 10. ¿Es posible reabrir una sucursal cerrada en Mercurial?
- 11. ¿Puedo cambiar el nombre de `nohup.out`?
- 12. ¿Cómo puedo cambiar el nombre de una colección en MongoDB?
- 13. Configurar una sucursal local para enviar a una sucursal específica
- 14. Nombre de sucursal de IntelliJ y Git
- 15. Mostrar el nombre de la sucursal actual en Eclipse/Subclipse
- 16. Mercurial - ¿Puedo hacerlo mejor?
- 17. ¿Cómo puedo recuperar una confirmación en una sucursal sin nombre en Git?
- 18. Renombrar una rama comprometida en Mercurial
- 19. ¿Cómo puedo cambiar el nombre de un servicio de Windows?
- 20. ¿Cómo puedo cambiar el nombre de mi proyecto de iOS?
- 21. ¿Cómo puedo cambiar el nombre de los archivos usando PowerShell?
- 22. ¿Cómo puedo cambiar el nombre de un nodo jsTree?
- 23. ¿Cómo puedo cambiar el nombre de un archivo en ASP.NET?
- 24. Sobrescritura de mi sucursal local con una sucursal remota
- 25. ¿Cómo puedo cambiar el nombre de mis limitaciones
- 26. ¿Puedo cambiar el nombre de LOCAL, REMOTO y BASE como se usa en git mergetool?
- 27. ¿Puedo cambiar el espacio de nombre de la interfaz de WCF ServiceContract sin cambiar el servicio?
- 28. Descartar una sucursal local en Mercurial antes de que sea empujada
- 29. ¿Puedo cambiar el nombre de los sitios en WebMatrix?
- 30. Emacs: ¿puedo cambiar el nombre de un proceso iniciado?
Esta es la mejor manera de hacer esto que he encontrado. Cerrar la rama evita que otros la utilicen accidentalmente porque no aparece en la salida de "hg branches". Todavía le permite acceder más tarde si conoce el nombre. – Utensil
¿Mercurial permitirá reutilizar el nombre de una rama cerrada? Es decir, si tiene una rama v3, ¿puede utilizar la técnica anterior para cambiarle el nombre a v4 y luego bifurcar una rama _new_ v3 a pesar de haber dejado atrás una v3 cerrada? –
No, las ramas son permanentes.Si se compromete con una sucursal cerrada, Mercurial la reabrirá. Si desea ramas "livianas" (como las de git), use marcadores en su lugar. –