Ahora tenemos una rama "estigmatizante", donde la "puesta en escena" parece ser un ajuste semántico mucho mejor. ¿Cuál es una buena estrategia para manejar esto?
205
Actualice la stiging
rama y cree 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
--force
. Por ejemplo:hg branch --force v3
. Esto dará como resultado lahg update v3
actualización a la nuevav3
sucursal, como lo deseaba.stiging
antes de bifurcarse, no obtendrá un "extremo suelto"Para futuros lectores: con la
rebase
extensión, puede crear una nueva sucursal con el mismo padrestiging
y mover todo el historial de la sucursal, de esta manera:Esto supone que
stiging
solo tiene un padre. Por supuesto, puede usar números de revisión explícitos en su lugar.Nota 1: Si la rama
stiging
incluye fusiones con otras ramas, creo que esto las preservará, siemprestaging
y cuandostiging
tengan el mismo padre. Pero ciertamente lo verificaría dos veces.Nota 2: dado que esto edita el historial, la rama anterior no desaparecerá simplemente de los repositorios clonados (consulte la
rebase
documentación). A menos que todos puedan clonar de nuevo, puede que no sea una solución muy práctica para un grupo grande.Nota 3 / Editar (cortesía de @JasonRCoombs): ahora que las fases son estándar en mercurial,
rebase
se negará a modificar los conjuntos de cambios que ya se han enviado. Puede engañarlo cambiando la fase de nuevo a borrador (conhg phases
), o dejar que la rama anterior permanezca donde está, y simplemente hacer una copia con el nombre correcto (por ejemplo, con `hg rebase --keep ').fuente
hg convert
en su lugar.--keep
al comando rebase, que copiará en lugar de mover los cambios.abort: can't rebase immutable changeset 11b1e2b7dc4f
. Tenga en cuenta que he injertado los conjuntos de cambios de otra rama en esta. Además de eso, se divide y se fusiona gratis..
para su--dest
valor, y la nueva toma tomará el nuevo nombre de la rama automáticamente.Si tiene conjuntos de cambios, deberá usar la extensión de conversión con un mapa de rama para cambiarle el nombre. Todos tendrán que clonar el nuevo repositorio o quitar la rama vieja.
fuente
Haga una nueva rama llamada "puesta en escena" y olvide la otra ...
fuente
Esto modifica el historial y es solo para usuarios avanzados de Mercurial. No hagas esto si no sabes lo que eso significa.
Si el estigma es solo local, puede cambiarlo a una puesta en escena con una combinación de injerto y tira . Comience actualizando el conjunto de cambios ancestro donde el estigma había divergido. Cree la rama de preparación e injerte cada confirmación desde el estigma hasta la puesta en escena. La puesta en escena ahora debería ser una copia del estigma. Por último, destruya el estigma eliminando su primer compromiso.
fuente
hg graft {first changeset in stiging}..{stiging head}