20

Escuché que la única forma de crear una sucursal en un depósito de Mercurial es hacer cambios en la copia de trabajo y luego asignarlos a una nueva sucursal.Mercurial: cree una sucursal sin tener que hacer un cambio primero

En Subversion, puedo crear una bifurcación sin tener que hacer cambios (copiando trunk en una ruta bajo tags) - ¿es posible hacer esto en Mercurial también?

Actualmente solo he visto TortoiseHg, por lo que es posible que esto solo se pueda hacer a través de la herramienta de línea de comandos y no lo sé.

Mi flujo de trabajo para esto es:

  • Crear rama de la característica.
  • Trabaja un poco en esa rama de características.
  • Crear una rama candidata de lanzamiento.
  • Fusionar característica (s) para liberar la rama candidata.
  • Implementar, probar, reparar Implementar, probar, corregir la rama candidato de lanzamiento.
  • Merge release candidate branch to trunk.

Muchas gracias de antemano.

+5

Hay un creciente consenso de que ramas nombradas no son una buena opción para los cambios a nivel de funciones en Mercurial porque no pueden nunca ser eliminado, solo oculto Muchas personas prefieren reservar ramas con nombres para conceptos de larga vida como 'estable' y 'expirimental' y usan ramas anónimas, marcadores o clones como ramas para las características y errores. Aquí hay un gran resumen: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/ –

Respuesta

30

Depende de lo que quiere decir por sucursal.

Se puede crear una sucursal con nombre dándole un nombre y luego confirmandolo, terminará como un nuevo conjunto de cambios en el historial, pero no necesita cambiar explícitamente ninguno de los archivos en la carpeta de trabajo para se le permitirá cometer.

hg branch NEWNAME 
hg commit -m "Created branch NEWNAME" 

También puede hacerlo utilizando el cuadro de diálogo TortoiseHg.

Sin embargo, si desea crear otra rama sin nombre, es decir. solo otra cabeza, entonces sí, necesitas cambiar algo. Y realmente, ¿por qué querrías simplemente crear un conjunto de cambios vacío sin cambios? ¿Solo para señalar que "aquí es donde ubicaré mi sucursal cuando tenga algunos cambios"?

+0

Para responder a su pregunta, es donde el próximo cambio será en realidad el resultado de una fusión. TortoiseHg no permitiría que el resultado de una combinación se cometiera en ninguna otra parte que no sea una de las dos "entradas" a la fusión, a menos que creáramos una rama primero.Sin embargo, el proceso de bifurcación nombrado que describió anteriormente resuelve mi problema muy bien, gracias. –

+0

Maldición, bajé sin querer. Por favor, haga una pequeña edición que puedo remontar ... – Matz

6

Es posible que desee comprobar el bookmarks extension (que pronto formará parte del núcleo Mercurial).
Si está familiarizado con el funcionamiento de las ramas en git, entonces es casi lo mismo.

Y al igual que las sucursales en git, puede crear un marcador sin comprometer nada.

$ hg bookmark my-feature 
1

Después de crear la rama no se olvide de empujarlo con:

hg push --new-branch 
Cuestiones relacionadas