Pregunta

He terminado de trabajar en una rama de la característica feature-x. Quiero combinar los resultados de vuelta a la rama default y cerca feature-x con el fin de deshacerse de él en la salida del hg branches.

Se me ocurrió el siguiente escenario, pero tiene algunos problemas:

$ hg up default
$ hg merge feature-x
$ hg ci -m merge
$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch

Así que la rama feature-x (changests 40-41) está cerrado, pero hay una nueva cabeza , el cierre 44 conjunto de cambios rama, que se enumeran en hg heads cada vez que:

$ hg log ...
o  44 Closed branch feature-x
|
| @  43 merge
|/|
| o  42 Changeset C
| |
o |  41 Changeset 2
| |
o |  40 Changeset 1
|/
o  39 Changeset B
|
o  38 Changeset A
|

Actualizar . Parece ser que desde la versión 1.5 Mercurial no muestra los jefes de sucursales cerradas en la salida del hg heads más

¿Es posible cerrar una rama fusionado sin salir de una cabeza más? ¿Hay manera más correcta de cerrar una rama de la característica?

preguntas relacionadas:

¿Fue útil?

Solución

Una forma es simplemente dejar ramas de características combinadas abierta (e inactivos):

$ hg up default
$ hg merge feature-x
$ hg ci -m merge

$ hg heads
    (1 head)

$ hg branches
default    43:...
feature-x  41:...
    (2 branches)

$ hg branches -a
default    43:...
    (1 branch)

Otra forma de hacerlo es cerrar una rama de la característica antes de la fusión usando un extra de cometer:

$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch
$ hg up default
$ hg merge feature-x
$ hg ci -m merge

$ hg heads
    (1 head)

$ hg branches
default    43:...
    (1 branch)

El primero de ellos es más sencillo, pero deja abierta una rama. El segundo uno no deja cabezas / ramas abiertas, pero requiere una más auxiliar cometió. Se puede combinar el último real se comprometen a la rama de la funcionalidad con este accesorio de confirmar utilizando --close-branch, pero hay que saber de antemano que practican será el último.

Actualizar : Desde Mercurial 1.5 se puede cerrar la rama en cualquier momento por lo que no aparecerá tanto en hg branches y hg heads más. La única cosa que posiblemente le puede molestar es que, técnicamente, el gráfico de revisiones todavía tendrá una revisión más sin childen.

Actualización 2 : Desde Mercurial 1.8 marcadores se han convertido en una característica central de Mercurial. Los marcadores son más conveniente para la ramificación de las ramas con nombre. Véase también esta pregunta:

Otros consejos

mi humilde opinión hay dos casos para ramas que se olvidó de cerrar

Caso 1:  sarmiento no fue combinado en forma predeterminada

En este caso puedo actualizar a la sucursal y hacer otra comprometen con --close-rama, desafortunadamente esto elige la rama para convertirse en la nueva punta y por lo tanto antes de empujar a otros clones que asegúrese de que la punta verdadera recibe algo más y otros cambios no se confunda sobre esa extraña punta.

hg up myBranch
hg commit --close-branch

Caso 2:  rama se fusionó por defecto

Este caso no es muy diferente del caso 1 y puede ser resuelto mediante la reproducción de los pasos para el caso 1 y dos adicionales.

En este caso puedo actualizar el conjunto de cambios de rama, hacer otra comprometerse con --close-sucursal y fusionar el nuevo conjunto de cambios que se convirtió en la punta en forma predeterminada. la última operación crea un nuevo consejo que se encuentra en la rama por defecto - HOORAY

hg up myBranch
hg commit --close-branch
hg up default
hg merge myBranch

Espero que esto ayude a los futuros lectores.

Editar ay, demasiado tarde ... Yo sé leer su comentario indicando que desea mantener la función de x conjunto de cambios alrededor, por lo que el enfoque de clonación que aquí no funciona.

todavía me dejo la respuesta aquí ya que puede ayudar a los demás.

Si desea deshacerse por completo de la "característica X", porque, por ejemplo, no funcionó, se puede clonar. Este es uno de los métodos explicados en el artículo y que hace el trabajo, y se refiere específicamente sobre las cabezas.

Por lo que yo entiendo que usted tiene esto y quiere deshacerse de la "característica-x" cabeza de una vez por todas:

@    changeset:   7:00a7f69c8335
|\   tag:         tip
| |  parent:      4:31b6f976956b
| |  parent:      2:0a834fa43688
| |  summary:     merge
| |
| | o  changeset:   5:013a3e954cfd
| |/   summary:     Closed branch feature-x
| |
| o  changeset:   4:31b6f976956b
| |  summary:     Changeset2
| |
| o  changeset:   3:5cb34be9e777
| |  parent:      1:1cc843e7f4b5
| |  summary:     Changeset 1
| |
o |  changeset:   2:0a834fa43688
|/   summary:     Changeset C
|
o  changeset:   1:1cc843e7f4b5
|  summary:     Changeset B
|
o  changeset:   0:a9afb25eaede
   summary:     Changeset A

Por lo que hace esto:

hg clone . ../cleanedrepo --rev 7

Y tendrá la siguiente, y verá que la función x-es, en efecto desaparecido:

@    changeset:   5:00a7f69c8335
|\   tag:         tip
| |  parent:      4:31b6f976956b
| |  parent:      2:0a834fa43688
| |  summary:     merge
| |
| o  changeset:   4:31b6f976956b
| |  summary:     Changeset2
| |
| o  changeset:   3:5cb34be9e777
| |  parent:      1:1cc843e7f4b5
| |  summary:     Changeset 1
| |
o |  changeset:   2:0a834fa43688
|/   summary:     Changeset C
|
o  changeset:   1:1cc843e7f4b5
|  summary:     Changeset B
|
o  changeset:   0:a9afb25eaede
   summary:     Changeset A

Puede que haya entendido mal lo que quería, pero por favor, no mod abajo, me tomé el tiempo que reproduce su caso de uso:)

Es extraño, que nadie ha sugerido la forma más robusta de cerrar unas ramas de características ... Usted sólo puede combinar Combinar cometen con la bandera --close-rama (es decir, comprometerse archivos modificados y cerrar la rama simultáneamente):

hg up feature-x
hg merge default
hg ci -m "Merge feature-x and close branch" --close-branch
hg branch default -f

Por lo tanto, eso es todo. Sin una cabeza extra en revgraph. No extra confirmación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top