2017-02-02 1 views
1

Je souhaite configurer un projet GitHub pour utiliser conventional-changelog standard version pour générer son journal des modifications. Nous utilisons un workflow squash and merge pour fusionner les PR dans notre branche de développement principale.Valider le format des messages de validation GitHub "Squash and Merge"

Existe-t-il un moyen de faire en sorte que le message de validation du commit écrasé suive un format spécifique?

Idéalement, cela fonctionnerait bien avec l'interface utilisateur GitHub, comme l'affichage d'une vérification défaillante. Je réalise que je pourrais simplement écrire une extension de navigateur pour l'appliquer, mais alors tout le monde travaillant sur le projet aurait besoin d'installer l'extension qui est trop haute d'une barrière à l'entrée pour un projet open source.

+0

Peut être utiliser une sorte de crochet git? –

Répondre

0

Il n'est pas clair si vous avez l'intention que ce soit sur GitHub Public ou Enterprise. Je n'ai pas essayé de l'implémenter sur GitHub Public.

Sur Enterprise, le processus consiste à créer un crochet de pré-réception pour le référentiel spécifique que vous souhaitez protéger. Gardez à l'esprit, à moins que vous ne souhaitiez télécharger un nouvel environnement, les outils que votre hook pré-réception peut utiliser seront limités.

Les meilleurs détails peuvent être trouvés à l'adresse: https://help.github.com/enterprise/2.11/admin/guides/developer-workflow/creating-a-pre-receive-hook-script/

Essentiellement, le flux sera à la recherche quelque chose comme:

#!/usr/bin/env bash 
# 
DEFAULT_BRANCH=$(git symbolic-ref HEAD) 

while read oldrev newrev refname; do 
    # We only care about these changes to master 
    if [[ "${refname}" != "${DEFAULT_BRANCH:=refs/heads/master}" ]]; then 
    exit 0 
    fi 

    # branch or tag got deleted 
    if [ "${newrev}" = "${zero_commit}" ]; then 
    continue 
    fi 

    # branch or tag is being created 
    if [ "${oldrev}" = "${zero_commit}" ]; then 
    continue 
    fi 

    for COMMIT_HASH in `git rev-list ${oldrev}..${newrev}`; 
    do 
    # Add your COMMIT_HASH scrubbing process here 
    # On failure exit 1 
    done 
done 
exit 0