Pregunta

Estoy empezando con el bazar, y he encontrado que la función de salida es el más útil para mi forma de trabajar - a saber que puedo c / o de una "copia maestra", hacer algo de desarrollo y luego confirmar mis cambios en el nuevo directorio. Esto actualiza la "copia maestra".

Pero lo que si estoy trabajando en (por ejemplo) dos proyectos, el cambio de diferentes porciones de código? Decir:

~/master                - master copy
bzr co master ./gui
bzr co master ./engine

Así que estoy haciendo cosas relacionadas con interfaz gráfica de usuario en el directorio ./gui y bajo el capó cosas en ./engine. ¿Cómo debería comprometerse mis cambios? Si cometo GUI primero, luego el motor, supongo que cualquier conflicto se marcarán en el motor?

¿Hay una manera de combinar interfaz gráfica de usuario y el motor, y luego hacer una sola comprometen a la copia maestra?

Para hacer las cosas un poco más complicado, ¿qué tal si hago esto:

bzr branch gui ./mouse

Ahora quizá he estado trabajando en el ratón, sino también en la interfaz gráfica de usuario. Si quiero fusionar el código de la interfaz gráfica y ratón, y luego comprometerse a maestro, ¿cuál es la mejor manera de manejar esto? O, de hecho, si yo también:

bzr branch gui ./keyboard

Si he cambiado GUI alterada, teclado y ratón, debería fusionarse jerárquicamente - es decir, del ratón + teclado, a continuación, combinar esto con interfaz gráfica de usuario, a continuación, confirmar GUI para dominar

Espero que sea claro lo que estoy tratando de lograr! Gracias de antemano por su tiempo.

¿Fue útil?

Solución

Si tiene dos cajas, cada vez que confirmó cambios en uno, primero tendrá que tirar abajo cualquier cambio de la otra, lo que podría tener que resolver los conflictos en cada paso. Esto es generalmente una buena idea, ya que es más fácil de resolver los conflictos a través del tiempo y asegurarse de que su código no difiere demasiado.

Sin embargo, parece que usted quiere tener los desarrolladores independientes que trabajan en "GUI" y "motor", o lo que desea para guardar la resolución de conflictos, hasta el desarrollo de ambas ramas ha completado. En este caso, es probable que les debe crear ramas independientes con "bzr branch". Cada rama puede utilizar commits locales y no preocuparse por conflictos entre sí. Luego, cuando llega el momento de fusionar lo puede hacer una de 3 maneras, todas las cuales consiguen el mismo resultado final:

1. Fusionar una rama a la otra, a continuación, empuje hacia arriba de dominar:

cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main

El inconveniente de este método anterior es que su "GUI" rama tiene ahora los cambios "motor" en el mismo. Lo cual está bien si vas a tirar ambas ramas una vez que son empujados hacia atrás en la línea principal. Pero si desea mantener las ramas más largas, puede:

2. Combinar en la línea principal:

cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit

Esto tiene el aspecto positivo de que todavía tiene "GUI" y "motor", como ramas separadas, pero que ha tenido que cometer uno de dominar antes de estar seguro de que lo harían ambos trabajan juntos. Por lo que realmente probable que desee:

3. Crear una rama de fusión:

bzr branch ~/master gui-engine-merge
cd gui-engine-merge
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
bzr push ~/master
# since this branch was only for merging, you don't need it anymore:
cd ..
rm -r gui-engine-merge

Otros consejos

Sí, bzr debe evitar que usted comprobar en los cambios de la cesión temporal del motor en caso de detectar conflictos. Normalmente, primero hacer "bzr arriba" justo antes de hacer el ingreso y luego asegurarse de que su material juega bien con los demás.

En cuanto a la segunda parte de su pregunta, se trata de ramas de ratón / teclado, esta es la forma en que normalmente lo haría. Simplemente CD en el directorio de interfaz gráfica de usuario, y luego hacer:

bzr merge ../mouse

Después de combinar los cambios, a continuación, puede comprometerse desde el directorio de interfaz gráfica de usuario y se va a enviar el conjunto de cambios en el directorio "maestro".

Tenga en cuenta que apenas soy un experto en bzr, pero esta es la forma en que he estado tratando con repos SVN.

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