remota - ¿Es posible obtener una lista de fusiones en una rama desde el sitio web de Github o la API?
git tag (2)
En nuestro flujo de trabajo, no se realizan confirmaciones "directas" en la rama maestra. La rama maestra solo recibe combinaciones de solicitudes de extracción.
Podemos pensar en cada combinación, entonces, como una nueva característica agregada a la rama maestra.
Por lo tanto, me gustaría obtener una lista de combinaciones en Master, como una forma de visualizar los bloques de características agregadas al producto a lo largo del tiempo.
¿Git o la API de Github exponen esta consulta, o tengo que analizar las confirmaciones en bruto?
Git expone dicha característica a través del comando git log . Este comando acepta algunos modificadores que filtran las confirmaciones representadas según el número de confirmaciones principales.
Uno de ellos se ajustaría a su solicitud:
- --merges Imprimir solo confusiones de fusión. Esto es exactamente lo mismo que
--min-parents=2
.
A continuación se muestran las confirmaciones de fusión (es decir, las confirmaciones con más de un padre) a las que se puede vNext
desde la rama vNext del proyecto LibGit2Sharp
$ git log vNext --merges --oneline
090b2de Merge pull request #348 from jamill/credential_callback_fix
0332c35 Merge pull request #260 from ben/great-renaming
3191c1b Merge pull request #239 from ben/libgit2-upgrade-81eecc3
1d544e8 Merge branch ''vNext''
238d259 Merge remote-tracking branch ''origin/master''
Actualizar
Aprovechar la misma salida a través de la API de GitHub es posible, pero sería algo más complejo.
Esto requeriría recuperar todas las confirmaciones de una rama , paginar a través de todos los resultados (para recuperar todos los metadatos de confirmación) mientras se filtran las que solo exponen un solo nodo primario.
Como punto de partida, la siguiente url muestra las últimas 30 comunicaciones de la rama vNext
.
Yo uso el siguiente script:
git log --merges --first-parent master /
--pretty=format:"%h %<(10,trunc)%aN %C(white)%<(15)%ar%Creset %C(red bold)%<(15)%D%Creset %s"
Explicando cada argumento:
-
--merges
: solo las confirmaciones de "fusión" (más de 1 padre); -
--first-parent master
: solo las combinaciones aplicadas almaster
. Esto elimina las entradas donde alguien fusionó elmaster
en sus sucursales; -
--pretty-format
: aplica el siguiente formato:-
%h
: el hash corto cometer; -
%<(10,trunc)%aN
: nombre del autor, truncado a 10 caracteres; -
%<(15)%ar
: el tiempo de compromiso relativo, rellenado a 15 caracteres; -
%<(15)%D
: los nombres de las etiquetas, también se rellenan con 15 caracteres; -
%s
: primera línea del mensaje de confirmación.
-
El resultado es bastante satisfactorio: