2011-12-08 11 views
12

Tengo un repositorio central y un repositorio local. El repositorio tiene la rama "predeterminada" y una rama denominada "mybranch". Si estoy trabajando en la rama llamada y desea combinar en ocasiones mis cambios en default y luego seguir trabajando en la rama llamada debería hacer esto:¿Debería uno combinar una rama con nombre en la rama predeterminada primero o viceversa?

  1. tire más tardar a partir de recompra centro en mi repo local de
  2. mientras se trabaja en MyBranch, hacer un "hg merge default" para combinar predeterminado eN MyBranch
  3. cometer localmente
  4. luego hacer "hg update default" y "hg merge mybranch" para combinar MyBranch en default
  5. cometer localmente
  6. empuje a la central de recompra e O

hacer igual que el anterior, pero el interruptor # 2 con # 4? (Por lo que estoy fusionando MyBranch en default primero?

Respuesta

6

La forma en que lo tienes ahora (fusionar default en mybranch primero) es mi forma preferida.

que tienden a utilizar ramas para aislar los cambios para una característica particular o refactorización, por lo que es mejor para llevar conjuntos de cambios de default en la rama llamada a intervalos regulares. de esta manera los cambios de la rama llamada se mantuvo hasta a la fecha en relación con la rama default.

+0

Gracias, pregunté porque en algunos diagramas, lo he visto a la inversa, donde primero se fusiona con el predeterminado. Entonces no sabía si había una razón para esto. Por ejemplo: http://nvie.com/posts/a-successful-git-branching-model/ (este es Git, pero entiendes mi punto ...) – BestPractices

+0

Ese diagrama está bien porque el único cambio que sucede [casi ] directamente a la rama 'master' es esa revisión, que también se fusiona en la rama' develop'. Una manera de hacerlo es realizar los cambios de la revisión en la rama 'master' y luego combinar' master' en 'develop'. La única razón por la que 'master' no se fusiona en' develop' es porque nada está cambiando en 'master' que necesita ser integrado. Otra buena parte para observar es la interacción entre las ramas 'desarrollar' y' liberar' en ese diagrama. –

+0

Cuando veo la interacción entre "desarrollar" y "liberar ramas" en ese diagrama, me parece que "desarrollar" primero se fusiona en "ramas de publicación" y luego "ramas de publicación" se fusiona en el "desarrollo" rama que es la manera opuesta en la que estoy haciendo cosas actualmente (si piensas en "ramas de liberación" como equivalentes a "predeterminado" y "desarrollo" como equivalentes a "mi rama". ¿Estoy malinterpretando ese diagrama? – BestPractices

11

usted escribe que

desea combinar en ocasiones mis cambios en default y luego continuar trabajando en la rama llamada

Normalmente no debe fusionar la rama de la característica en la rama default, a menos que la función se lleva a cabo. Tal vez eso es lo que querías decir?

Sólo como referencia, el flujo de trabajo recomendado es hacer

  1. Crear rama de la característica
  2. Haga su trabajo allí
  3. regularmente (cada dos días) fusionar los cambios de default en la rama de la característica:

    1. hg pull para obtener los últimos cambios de los otros desarrolladores
    2. hg merge para integrar los últimos cambios a su rama de la característica
  4. Cuando la rama de la característica se hace todo, se fusionan de nuevo en default:

    1. hg pull
    2. hg update default A la caja de la rama que desea combinar en
    3. hg merge myfeature para hacer la fusión

La fusión final será muy pequeño ya que las fusiones regulares de default en la rama de la característica se asegura de que sólo hay una pequeña distancia de las dos cabezas rama de nuevo a un ancestro común.

+1

Eso es cierto si sus "características" son lo suficientemente pequeñas. Pero muchos de nosotros hacemos funciones incrementales, completando piezas a un nivel razonable, incluso si no están totalmente "hechas". –

Cuestiones relacionadas