2017-02-02 1 views
1

Ich möchte ein GitHub-Projekt einrichten, das conventional-changelog standard version verwendet, um sein Changelog zu generieren. Wir verwenden einen squash and merge Workflow, um PRs in unseren Hauptentwicklungszweig zu integrieren.Validiere das Format von GitHub Commin-Nachrichten "Squash and Merge"

Gibt es eine Möglichkeit, dass ich erzwingen kann, dass die Commit-Nachricht des gequetschten Commits einem bestimmten Format folgt?

Idealerweise würde dies gut mit der GitHub-Benutzeroberfläche funktionieren, z. B. als fehlgeschlagene Prüfung. Mir ist klar, dass ich einfach eine Browsererweiterung schreiben könnte, um dies zu erzwingen, aber dann muss jeder, der an dem Projekt arbeitet, die Erweiterung installieren, die für ein Open-Source-Projekt zu hoch ist.

+0

sein kann irgendeine Art von git Haken benutzen? –

Antwort

0

Es ist nicht klar, ob Sie dies auf GitHub Public oder Enterprise planen. Ich habe nicht versucht, dies auf GitHub Public zu implementieren.

In Enterprise wird ein Pre-Receive-Hook für das spezifische Repo erstellt, das Sie schützen möchten. Denken Sie daran, dass Sie nur in den Tools, die Ihr Pre-Receive-Hook verwenden kann, eingeschränkt sind, es sei denn, Sie möchten eine neue Umgebung hochladen.

Die besten Details können gefunden werden: https://help.github.com/enterprise/2.11/admin/guides/developer-workflow/creating-a-pre-receive-hook-script/

Im Wesentlichen wird der Fluss etwas wie sehen können:

#!/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 
Verwandte Themen