web-dev-qa-db-fra.com

Est-il possible d'obtenir une liste des fusions dans une branche à partir du site Web Github OR API?

Dans notre flux de travail, aucune validation "directe" n'est effectuée dans la branche principale. La branche principale ne reçoit que les fusions des demandes de tirage.

Nous pouvons alors considérer chaque fusion comme une nouvelle fonctionnalité ajoutée à la branche principale.

Je voudrais donc obtenir une liste des fusions dans master, comme un moyen de visualiser les blocs de fonctionnalités ajoutées au produit au fil du temps.

Est-ce que git ou l'API Github expose cette requête, ou dois-je analyser les validations brutes?

33
andy

J'utilise le script suivant:

git log --merges --first-parent master \
        --pretty=format:"%h %<(10,trunc)%aN %C(white)%<(15)%ar%Creset %C(red bold)%<(15)%D%Creset %s"

Expliquant chaque argument:

  • --merges: Uniquement les validations "merge" (plus d'un parent);
  • --first-parent master: Uniquement les fusions appliquées à master. Cela supprime les entrées où quelqu'un a fusionné master dans ses branches;
  • --pretty-format: Applique le formatage suivant:
    • %h: Le hachage court de validation;
    • %<(10,trunc)%aN: nom de l'auteur, tronqué à 10 caractères;
    • %<(15)%ar: le temps de validation relatif, complété à 15 caractères;
    • %<(15)%D: les noms des balises, également remplis à 15 caractères;
    • %s: Première ligne du message de validation.

Le résultat est plutôt satisfaisant:

terminal image of the command output

31
Fábio Batista

Git expose une telle fonctionnalité via la commande git log. Cette commande accepte certains commutateurs qui filtrent les validations rendues en fonction du nombre de validations des parents.

L'un d'eux répondrait à votre demande:

  • - fusionne Imprime uniquement les validations de fusion. C'est exactement la même chose que --min-parents=2.

Ce qui suit montre les validations de fusion (c'est-à-dire les validations avec plus d'un parent) accessibles depuis la branche vNext de la LibGit2Sharp projet

$ 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'

Mettre à jour

Tirer parti de la même sortie via l'API GitHub est possible, mais serait un peu plus complexe.

Cela nécessiterait de récupérer tous les commits d'une branche, paginer à travers tous les résultats (afin de récupérer tous les commits métadonnées) tout en filtrant ceux qui n'exposent qu'un seul nœud parent.

Comme point de départ, l'url suivante montre les 30 derniers commmits de la branche vNext.

14
nulltoken