Cómo saber si una fusión de git fue rápidamente reenviada o no

Tengo una twig de características que me estoy fusionando a través de Github PR (git merge –no-ff).

Lo que me encantaría es la capacidad de decir si la fusión fue rápidamente reenviada cuando se fusionó. Esencialmente, todas mis testings se ejecutan en la twig de características. Me gustaría omitir ejecutar mis testings en la twig principal si se ejecuta básicamente contra el mismo código.

Si se agregó una confirmación a la twig principal mientras se desarrollaba la twig de características, la fusión debería hacer que se ejecuten mis testings. ¿Es eso posible con git?

Para saber si una revisión es rápidamente reenviada desde cualquier punto, puede intentar usar git branch --contains . Si la twig A se puede reenviar rápidamente desde el punto B, entonces la twig A debe git branch --contains point-B (use -r si la twig A está en un control remoto).

La salida de git merge te dice cuándo usa una combinación de avance rápido. Puede conservar las versiones locales de ambas twigs, fusionar la twig de características local en su maestro local y ver el resultado.

Puedes probar literalmente si alguna combinación de fusión existente M (donde M es la ID de hash) podría haber sido una operación de avance rápido probando si M ^1 es un antecesor de M ^2 :

 ...--o--o--M^1---M--... \ / o--o--M^2 

(esta fusión no fue capaz de avanzar rápidamente ya que el primer padre de M , M ^1 , no es un antepasado del segundo padre de * M) vs:

 ...--M^1-----------M--... \ / o--o--M^2 

(esta fusión fue capaz de avanzar rápidamente, pero se vio forzada a ser una combinación real).

Sin embargo, para omitir las testings, podría ser más simple comparar los treees asociados con M ^1 y M Es decir, incluso si hubiera una fusión real, podría haber sido una "fusión sin efecto". Una comparación de tree encontraría esto, mientras que las testings de ancestros no lo harían (realizaría una testing innecesaria).