Mercurial, el conflicto, la fusión, más conflictos más adelante, no mercurial recordar resolución inicial?

StackOverflow https://stackoverflow.com/questions/4016639

Pregunta

Imagínese este escenario:

  1. Alice y Bob ambos clones Mercurial un repositorio principal central y que contenga el archivo de texto 1
  2. Tanto Alice y Bob realiza un cambio en la misma línea en el archivo, y se compromete
  3. Bob empuja de nuevo al repositorio central, pero no Alice
  4. Alice ahora se detiene en su repositorio, da cuenta de que ahora tiene dos cabezas, y se funde
  5. Desde la fusión se produce un conflicto, se resuelve el conflicto
  6. Alice después comete, pero no empuja
  7. Bob ahora hace más cambios en el archivo, en alguna otra ubicación del archivo (es decir. Lejos de los cambios iniciales) y se compromete, y empuja
  8. Alice, en su archivo combinado, hace un cambio similar en la misma ubicación Bob acaba de cambiar, y se compromete
  9. tirones Alice, y el descubrimiento de un nuevo repositorio de doble-dirigido, que se fusiona

Aquí hay una visión diferente del escenario anterior

(los números después de medios "cambio" que la persona cambiado "porción X" del archivo. Si los usuarios cambian la misma porción, tenemos un conflicto de combinación por delante, si cambiaron diferente, no tanto)

    Alice                    Bob
    CLONE MASTER             CLONE MASTER
    -----------------------------------------
    CHANGE 1                               <-----+
    COMMIT                                       +-- upcoming merge conflict
    -----------------------------------------    |
                             CHANGE 1      <-----+
                             COMMIT
                             PUSH
    -----------------------------------------
    PULL                                   <-- Bob's change +1 head
    MERGE                                  <-- Attempt to get rid of extra head
    RESOLVE CONFLICT                       <-- Resolve merge conflict
    COMMIT
    -----------------------------------------
                             CHANGE 2      <-----+
                             COMMIT              +-- yet another merge
                             PUSH                |   conflict ahead
    -----------------------------------------    |
    CHANGE 2                               <-----+
    COMMIT
    PULL                                   <-- Bob's change, again +1 head
    MERGE                                  <-- Attempt to get rid of extra head
    RESOLVE ???

En este punto, mi pregunta es la siguiente:

  • ¿Las herramientas que se fusionan llevarla primera resolución de combinación en cuenta? Desde Bob nunca puso en cambios de Alice, su ejemplar está todavía vacío de cualquiera de los cambios Alice ha hecho, su cambio inicial (que estaba en conflicto con Bob), su combinación, y su último cambio, que está en conflicto con el último cambio de Bob .

Si yo hubiera tomado simplemente la versión de Bob del archivo, y la versión de Alicia del archivo, y dado a cualquier combinación de programa, que sería la bandera tanto los cambios como en los conflictos.

En otras palabras, será la herramienta conflicto oportunidad de preguntar a Alice para resolver tanto el conflicto original y el nuevo, o sólo el último de ellos?

supongo ( no he probado esto, todavía intentar construir algún tipo de script de prueba para probar este problema ) que Mercurial sólo le pedirá Alice para resolver el último conflicto.

¿Qué pasa si configuro Mercurial usar un programa de comparación tercera parte / fusión? Será esta solicitud? Por ejemplo, he configurado mi instalación de usar que no tiene comparación , a los dos archivos (Bob es sólo con sus cambios y Alice está con ella Cambios + resolución de combinación) administrarse con o sin la resolución inicial presente? En otras palabras, si se utiliza que no tiene comparación , será lo correcto pasar aquí también (suponiendo que lo hace en absoluto.)

¿Fue útil?

Solución

Mercurial sólo requerirá que se resuelva el último conflicto, y que no tendrán ningún problema con las herramientas de cambio externo.

Cuando Alicia hace su segunda unión, que está fusionando su propia fusión anterior con el nuevo Delta de Bob y sólo que las necesidades de cambio que deben integrarse de nuevo.

diagrama muy claro, por cierto. Gracias

Otros consejos

Es sólo va a pedir a Alice a cambiar el último conflicto.

La razón de esto es la siguiente:

Ya tiene CAMBIO 1 de Bob es en su historia para que no se trate de cambiar el código de nuevo. Funciona.

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