Git confundido al fusionar una actualización en mi subtree

Anteriormente utilizamos muchos submodules en nuestros repositorys principales, pero para boost la capacidad de mantenimiento de nuestros proyectos comenzamos una twig experimental donde los reemplazamos todos con subtreees.

Esto funcionó bien, pero ahora cuando trato de actualizar uno de los subtreees, combina erróneamente la actualización en un directory completamente incorrecto que ni siquiera es un subtree.

El repository principal, donde la twig "subtree" contiene la twig experimental, es: git: //github.com/hugowetterberg/goodold_drupal.git

El repository se fusionará en las actualizaciones de: git: //github.com/voxpelli/drupal-oembed.git

Fusionando por hacer: git merge -s subreeem oembed / master

La ruta en la que deben fusionarse las actualizaciones: sites / all / modules / oembed /

La ruta en la que se fusionan: modules / aggreger / translations /

¿Alguien tiene una idea de cómo get las actualizaciones en los subtreees o cuál puede ser el error?

Lamentablemente, este es un error (o una característica que falta) en el código "git merge -s subreeree". En realidad adivina los subtreees que desea fusionar. Por lo general, esto mágicamente resulta ser correcto, pero si su subtree contiene muchos cambios (o estaba originalmente vacío, o lo que sea), entonces puede fallar espectacularmente.

La mejor manera de evitarlo es:

  1. Combina los files como lo hiciste arriba.

  2. Mueva manualmente todos los files resultantes a donde deberían haber ido.

  3. git commit -a --amend para corregir el commit de fusión.

Es probable que las fusiones futuras funcionen bien, a less que este directory tenga constantemente cantidades increíbles de flujo.

El command experimental " git subtree " tiene un parámetro --prefix que le permite anular esto, pero desafortunadamente no funciona en este momento (ya que requiere trabajar alnetworkingedor de las características de "git merge -s subreeree" y no ha habido time para hacerlo).

De todos modos, esta debería ser una situación rara y la solución alternativa no será necesaria ni siquiera para futuras fusiones del mismo proyecto.

git versión 1.7.9.5

 git pull -s subtree <remote name> <remote branch> 

(la fusión entró en el directory incorrecto)

 git reset --hard HEAD^ git pull -s subtree -Xsubtree=correct/directory <remote name> <remote branch> 

Tenga en count que no hay una barra inclinada en el directory

Gracias apenwarr

http://git.661346.n2.nabble.com/PATCH-0-8-The-return-of-Xours-Xtheirs-Xsubtree-dir-td4069081.html