Wie kann ich (oder drängen Sie) git commiters dazu auffordern, relevante Autoreninformationen bereitzustellen?

8

Neunundneunzig Prozent der Zeit, die unser Team auf lokale Entwicklungsboxen setzt und Commits anstößt, in diesem Fall ist die Autorschaftsinformation über Commits korrekt. In Zeiten von Stress wird jemand jedoch etwas direkt auf dem Dev-Server zwicken und von dort aus committen. Wenn dies der Fall ist, wird für die Autoreninformationen im Commit standardmäßig das freigegebene Bereitstellungskonto verwendet.

Gibt es eine Möglichkeit, Benutzer auf ihre Autoreninformationen beim Commit hinzuzufordern? Sie werden sich nicht daran erinnern, --author zu machen.

Einige Dinge, die ich mir angeschaut habe, die aber nicht über die Ziellinie kommen konnten, sind:

  1. Verwenden eines clientseitigen Hooks zum Ablehnen von Commits mit 'deploy' in der Autorzeichenfolge
  2. suchte nach einer Einstellung, um immer nach Autoreninformationen zu fragen
  3. versuche, den Autor automatisch anhand des ssh-Schlüssels zu setzen, der für die Anmeldung in der Box
  4. verwendet wird

Gibt es eine Möglichkeit, einen von diesen zur Arbeit zu bringen oder einen guten Weg, dies zu tun?

    
Ry4an Brase 09.08.2012, 14:28
quelle

3 Antworten

6

Okay, ich habe einen Weg gefunden, dies zu tun, aber es funktioniert nur, weil wir ausschließlich über ssh auf diese Box zugreifen, indem wir die schlüsselbasierte Authentifizierung verwenden.

In der /home/deploy/.ssh/authorized_keys -Datei des freigegebenen Bereitstellungsbenutzers habe ich eine Umgebungsvariable pro Schlüssel hinzugefügt, sodass meine beispielsweise so aussieht:

%Vor%

, das auch hinzugefügt werden musste:

%Vor%

zur Datei /etc/ssh/sshd_config .

Das funktioniert, aber ich würde lieber etwas über eine user.name=ASK -Einstellung erfahren, wenn so etwas existiert.

    
Ry4an Brase 09.08.2012, 15:25
quelle
0

Ich bin nicht ganz sicher, wie es für euch funktioniert, aber Ihr Entwickler könnte einen Alias ​​einrichten, um% code% zu jedem normalen Commit hinzuzufügen.

    
edhedges 09.08.2012 14:31
quelle
0

Leider konnte ich auch keine wirklich zufriedenstellende Lösung finden. Ich werde alle Lösungen auflisten, die ich bisher gefunden habe (ich denke, du hast bereits die besten 3 in deiner Frage vorgeschlagen).

(1) Verbieten Sie das Commit ohne --author

Speichern Sie das folgende Skript als pre-commit einholen in .git/hooks/pre-commit zu verbieten:

%Vor%

Setzen Sie den Benutzernamen auf XXX:

%Vor%

Warnung: Dies funktioniert nur für normale Commits. Merge-Commits werden als XXX übernommen. Wahrscheinlich gibt es auch einen Weg, diese Arbeit zu bekommen.

(2a) Fragen Sie nach Autorinformationen vor dem Commit (mit Hooks)

Die einzige Möglichkeit, den Autor mithilfe von Hooks festzulegen, scheint darin zu bestehen, das Commit mit post-commit hook, siehe auch hier .

Dies ist ein seltsamer Hack mit hässlichen Nebenwirkungen (z. B. Autor in Commit Nachricht falsch angezeigt).

%Vor%

Verwenden Sie das folgende Skript, um einen Autor Vorschläge basierend auf letzten Commits zu erhalten:

%Vor%

Sieht so aus:

%Vor%

(2b) Fragen Sie vor dem Festschreiben nach Autorinformationen (mit einem benutzerdefinierten Skript oder Alias)

Sie können ein Skript git-commit.sh oder ein Git-Alias git commit-author erstellen, das zur Verwendung des Autors auffordert und dann git commit --author=<user's selection> aufruft. Leider ist nicht überschreibbar git commit .

Ein git-commit.sh Skript in /usr/local/bin könnte so aussehen:

%Vor%

Um das Skript als Alias ​​hinzuzufügen, führen Sie:

%Vor%

(3) Autor automatisch anhand des zum Anmelden verwendeten SSH-Schlüssels einstellen

Das ist Ihre eigene Antwort, hier zur besseren Übersicht kopiert:

In der /home/deploy/.ssh/authorized_keys -Datei des freigegebenen Bereitstellungsbenutzers habe ich eine Umgebungsvariable pro Schlüssel hinzugefügt, sodass meine beispielsweise so aussieht:

%Vor%

, das auch hinzugefügt werden musste:

%Vor%

zur Datei /etc/ssh/sshd_config .

    
lumbric 10.03.2018 21:26
quelle

Tags und Links