2010-04-07 6 views
20

he creado una nueva rama usando este comando: hg branch new_branchramificación y remotas cabezas en Mercurial

Después de la primera comprometen a la nueva rama, la rama por defecto se desactiva. Si esto se empuja, el repositorio central tendrá solo una cabeza que pertenece a la nueva rama.

Cuando mi colega empuja sus confirmaciones en la rama por defecto, recibirá este error:

pushing to ssh://... 
searching for changes 
abort: push creates new remote heads! 
(did you forget to merge? use push -f to force) 

¿Hay algo malo en forzar el empuje? ¿Por qué las cabezas remotas son malas?

¿Cómo trabajas de forma remota en ramas separadas y pasas a un repositorio?

Respuesta

18

Los cabezales remotos son malos porque básicamente estás empujando el esfuerzo de unirte a otra persona. Este mensaje está ahí para evitar que las personas introduzcan accidentalmente cabezas remotas, diciéndoles que se fusionen primero antes de empujar.

En este caso, sin embargo, ha creado una rama con nombre, lo que significa que intencionalmente introduce y comparte una nueva cabecera, y puede descartar la advertencia como informativa. Use hg push --new-branch para forzarlo (o -f antes de la versión 1.6).

+2

Están agregando una opción --new-branch por cierto que puede usar en el futuro como una alternativa más segura a --force. El mensaje de error de compromiso también debe mejorarse. –

+0

ya lo han agregado, aunque no funciona para mí en 1.8.1 (aunque el mensaje de error de confirmación sigue siendo el mismo). –

+0

Sí, está disponible desde Mercurial 1.6. He actualizado la respuesta para reflejar eso. –

4

Además de impulsar el trabajo de fusionarse con otra persona, las cabezas remotas también son malas ya que pueden causar confusión. Las personas que crean un nuevo clon no sabrán de qué cabeza comenzar si hay varios. Para empeorar las cosas: un nuevo clon se actualizará a la cabeza más nueva en la rama predeterminada, y este encabezado cambia de un momento a otro cuando las personas envían los cambios a las diferentes cabezas.

Usando ramas nombradas o clones independientes ayuda aquí: un nuevo clon siempre se actualizará a la cabeza de la rama por defecto y la gente se puede actualizar a otra rama, según sea necesario.

Cuestiones relacionadas