2016-05-16 13 views
3

Von Gerrit zu GitHub, gibt es eine wichtige Eigenschaft, die ich vermisse, nämlich allowing only fast forward merges. Im Grunde ist meiner Meinung nach jede Art von "CI-Build-Abmeldung" nutzlos, wenn Sie sich in einer veralteten Master-Filiale abmelden.Github (Enterprise) Repo konfigurieren, um nur Fast Forward Commits/PR Merges zu erlauben?

Ich fragte mich, ob es eine Möglichkeit gibt, wie dies in (Unternehmens-) github konfiguriert werden kann? Gibt es eine Einstellung oder einen anderen Trick, der es Benutzern nicht erlauben würde, die Schaltfläche "Zusammenführungs-Pull-Anforderung" in GitHub zu drücken, wenn die Verzweigung nicht ordnungsgemäß rebasiert wurde?

Ich möchte sogar hinzufügen, dass es auch überprüfen sollte, ob alle Commits in der PR gequetscht wurden (und die PR kann nicht zusammengeführt werden, wenn sie nur ein Commit enthält).

Also, perfekte Lösung: Erlaube nur PR Merges, die eine einzige Festschreibung haben und zuvor rebased wurden.

Antwort

-1

Ich denke, dass Sie einen Befehl zu Ihrer git config-Datei hinzufügen können, die nur schnellen Vorlauf erzwingt. Sie können dies in Ihrer lokalen (d. H. Repositoryspezifischen) Git-Konfigurationsdatei oder in Ihrer globalen git-Konfigurationsdatei tun.

Um Ihre lokale git config-Datei zu ändern, geben Sie Folgendes in das Terminal (aus der Git-Repository):

git config --add branch.master.mergeoptions --ff-only

oder es global zu machen, das heißt für alle git Projekte auf Ihrem Rechner anwenden

git config --global --add branch.master.mergeoptions --ff-only

das Ergebnis der obigen Befehle ausgeführt ist, dass das folgende in der git config-Datei hinzugefügt wird (so könnte man natürlich diese nur manuell hinzufügen)

[branch "master"] mergeoptions = --ff-only

Die globale git config-Datei wird in der Regel bei ~/.gitconfig und das Repository spezifische git config-Datei befindet sich in der Regel auf name_of_repo/.git/config entfernt.

Ich habe es nicht wirklich ausprobiert. Lassen Sie es mich wissen, wenn es funktioniert oder nicht für Sie arbeitet.

Ich bin mir nicht sicher, wie Sie nur ein Commit erzwingen können. Ich habe an einem Ort gearbeitet, der genau das getan hat, was du beschreibst, nur vorwärts und nur 1 commit. Sie enden mit einer schönen linearen Geschichte, aber es verlangsamt wirklich Entwicklung, besonders für Teams von Entwicklern größer als 2. Ein etwas flexiblerer Ansatz könnte sein, Leute zu bitten, das folgende zu tun.

Von Ihrem Entwicklungszweig (die Kraft, als Unterfütterungsmaterial benötigt setzt die Geschichte aus sync): git pull git rebase origin/master git push --force

Stellen Sie sicher, dass Ihre Tests bestanden haben und dann:

git checkout master git merge <name_of_branch> --squash git push

Sie können Markieren Sie auch die Zusammenführung in den Master, wenn Sie jedem zu migrierenden Commit eine Version geben möchten, dh auch Folgendes tun:

git tag <tag_number> git push --tag

Verwandte Themen