Fusiona un PR (no cerrado) de git –squash

Cuando desarrollo en una twig y lo fusiono en maestro con:

git merge --no-ff $BRANCH git push origin HEAD 

Combina el PR en Github (la insignia morada).

Pero si quiero fusionarlo aplastado:

 git merge --squash $BRANCH git add . && git commit -m "Merge branch '$BRANCH'" git push origin HEAD 

Permanece abierto hasta que elimine la twig:

 git branch -D $BRANCH git push origin :$BRANCH 

¿Cómo puedo fusionar una twig aplastada y fusionar (no cerrar) la banda en Github?

Aquí hay un repository de ejemplo: https://github.com/sospedra/better-pr-close

En caso de que alguien tenga el mismo problema. Me puse en contacto con el equipo de GitHub por correo electrónico y me dijeron que no es posible en este momento porque usan el compromiso del SHA para vincular la fusión de compromiso con el RP.

Aquí está la respuesta completa:

La lógica para fusionar automáticamente una request de extracción mira el SHA de confirmación presente en la request de extracción.

Si ya se han enviado todos los SHA de confirmación a la twig base, la marcaremos automáticamente como fusionada.

Cuando squash commits y push, las references a las confirmaciones originales se pierden.

Esto significa que actualmente no es posible marcar una RP como fusionada si las confirmaciones se han aplastado y empujado desde la línea de command.

Puedo pasar su request al equipo para considerar mejoras futuras.

No puedo prometer si o cuándo lo agreguemos, pero seguro que lo transmitiré.

Tomarán en consideración la request. Esperemos que se agregue en algún momento.

Esto es causado por los diferentes mecanismos entre git merge y git merge --squash .

Supongamos antes de fusionar las dos twigs, el historial de confirmación se ve así:

 …---A master \ B alpha 

Situación 1: si usas git merge --no-ff alpha , el historial de commit será:

 …---A---C master \ / B alpha 

Después de presionar los cambios a github, PR sabe que la confirmación C es la confirmación fusionada (ya que la confirmación C tiene dos padres en la twig master y en alpha twig alpha ), por lo que la RR se cerrará.

Situación 2: si usas git merge --squash alpha , el historial de commit será:

 …---A---C' master \ B alpha 

Después de presionar los cambios en github, es difícil para el RP juzgar si el compromiso C' es los nuevos cambios para la twig master o si es la confirmación fusionada de squash de alpha twig alpha (la confirmación C' solo tiene un padre ).

Y por ahora, github solo trata la situación1 para cerrar el PR ya que la twig alpha aparentemente se fusionó con la twig master . Mientras que para la situación 2, dado que la confirmación C' solo tiene un padre que confirma A , PR no se cerrará.