Pregunta

Estoy tratando de combinar el código en dos ramas con el comando 'git merge', pero Git es estrellarse durante el proceso. Tengo que encontrar una forma alternativa de combinar estas ramas.

Para aumentar la salida de fusionado a un nivel de depuración Corrí:

    $ export GIT_MERGE_VERBOSITY=5

Actualmente estoy en la rama de destino. git-estado muestra todo limpio y claro. Cuando puedo combinar las ramas, esto es lo que veo (He sustituido los comentarios de facturación con %%%%%% y nombres de archivo con #######, ya que pueden ser sensibles-negocio).

$ git merge origin/PH-RELEASE-146.0
Merging HEAD with origin/PH-RELEASE-146.0
Merging:
8399d82 %%%%%%
4f9dcfe %%%%%%
found 2 common ancestor(s):
e0a5fa1 %%%%%%
ce62bf1 %%%%%%
  Merging:
  e0a5fa1 %%%%%%
  ce62bf1 %%%%%%
  found 1 common ancestor(s):
  af34a07 %%%%%%
  Skipped ######## (merged same as existing)
  Removed ########
  Removed ########
  ...
  Removed ########
  Auto-merged build
  CONFLICT (submodule): Merge conflict in build - needs b3efae4855bc5eb83aa3167ce6c309a4503c3286
  There are unmerged index entries:
  1 build
  2 build
  3 build
Merge with strategy recursive failed.

Resulta que en este punto, git-fusión se ha estrellado. ¿Cómo sé esto?  - cuando se ejecuta git bajo Cygwin:

$ git merge origin/PH-RELEASE-146.0

     11 [main] git 4352 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)

Segmentation fault (core dumped)
  • cuando se ejecuta git bajo Linux, con 'ulimit -c unlimited':
    $ ulimit -c unlimited; ls -l core; git merge origin/PH-RELEASE-146.0; ls -l core
    ls: cannot access core: No such file or directory
    Merging HEAD with origin/PH-RELEASE-146.0
    ...
    ...
    Merge with strategy recursive failed.
    -rw------- 1 user group 1589248 Jul 29 12:48 core
  • En ambos casos, .git / index.lock permanece y debe eliminarse manualmente antes de cualquier comando git va a funcionar de nuevo:

    Estado $ git fatal: no se puede crear '.git / index.lock': El archivo existe

He caminado manualmente a través de la fusión anterior mediante la comparación de las identificaciones de comprometerse con los que está en el árbol gitk. Parece claro que git está buscando ancestros comunes y la ruptura de la fusión en trozos, el tratamiento de cada ancestro de forma recursiva. Pero lo que creo que ha causado el problema es que el "git-link" a un sub-módulo llamado "construir" ha cambiado entre e0a5fa1 compromete y ce62bf1:

  • e0a5fa1 en la acumulación submódulo está destinado a ser 8dc84b6
  • ce62bf1 en la acumulación submódulo está destinado a ser b3efae4

Así que, obviamente hay un conflicto. Pero es un conflicto durante la "parcial" fusionar o como se llame, no el final. Y no parece git para manejar esto muy bien a todos.

Ok, por lo que es probable que haya un error - ¿Cómo hago para enviar un informe de error

Pero lo que realmente me preocupa es el hecho de que no puedo fusionar estas dos ramas. ¿Alguien sabe una forma alternativa de llevar estas ramas juntos sin necesidad de utilizar el comando 'fusión'? ¿Puedo obtener 'git-fusión' ignorar alguna manera este submódulo completo durante todo el proceso de fusión?

Linux Git versión 1.6.0.4

Cygwin Git versión 1.6.1.2

¿Fue útil?

Solución

Trate de actualizar git en Linux, 1.6.3.3 es la última, si esto no funciona pruebe la idea de William.

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