Kann ich git so konfigurieren, dass die Konfigurationseinstellungen von user.email nicht raten?

8

Auf meinem System wurde der user.email git Konfigurationswert nicht auf globaler Ebene festgelegt. Stattdessen konfiguriere ich es individuell in jeder Sandbox. Dies liegt daran, dass ich verschiedene E-Mail-Adressen für verschiedene Projekte verwenden muss.

Leider habe ich manchmal vergessen, den Wert beim Erstellen einer neuen Sandbox zu konfigurieren. In diesen Fällen "schätzt" git einen Wert anhand von Informationen aus der Umgebung. Das führt zu verschiedenen Problemen, zum Beispiel werden mir auf GitHub keine Commits zugewiesen, und ich werde nicht viel Glück haben, wenn ich diese Commits mit @localhost E-Mail-Adressen bekomme, die mir rückwirkend zugeschrieben werden.

Gibt es eine Möglichkeit, git auf Fehler zu konfigurieren, anstatt zu raten, wenn ich versuche, ohne einen lokalen oder globalen user.email -Wert zu committen?

    
Marc Liyanage 06.11.2013, 20:15
quelle

5 Antworten

5

Dafür gibt es jetzt eine Konfigurationsoption.

  

user.useConfigOnly

     

Weisen Sie Git an, zu versuchen, die Standardwerte für user.email und user.name zu erraten, und rufen Sie stattdessen nur die Werte aus der Konfiguration ab.

Also setze das so auf wahr:

%Vor%

Und wenn Sie das nächste Mal versuchen, einen Commit zu machen, ohne dass user.email und user.name explizit gesetzt sind, erhalten Sie einen Fehler.

%Vor%     
Sergei M 22.11.2016, 03:21
quelle
3

Verwenden Sie einen Pre-Commit-Hook

Sie können einen Pre-Commit-Hook verwenden, um Sie aufzufordern, Ihre projektspezifische E-Mail-Adresse einzurichten. Zum Beispiel:

%Vor%

Dies führt dazu, dass das Festschreiben ohne die entsprechende Konfiguration fehlschlägt:

%Vor%

Benutze git's Template, um sicherzustellen, dass es immer vorhanden ist

Sie können Git-Vorlagen verwenden, um sicherzustellen, dass der Hook standardmäßig in zukünftigen Repositories vorhanden ist. indem Sie den Hook in den Vorlagenordner platzieren:

%Vor%

Der genaue Speicherort des Vorlagenordners kann je nach Betriebssystem / Distribution variieren.

Bei bestehenden Repositories - entweder erstellen / kopieren Sie den Hook an Ort oder wenn der git-core Templates-Ordner aktualisiert wurde, führen Sie git init aus, um die neue Hook-Datei zu erstellen.

    
AD7six 06.11.2013 21:37
quelle
3

Die hier vorgeschlagenen Vorab-Lösungen funktionieren gut und ich werde einen von ihnen akzeptieren. Ich benutze dies am Ende:

%Vor%

Es wird systemweit in meiner ~/.gitconfig -Datei mit dem init.templatedir config-Wert aktiviert, den ich in einem anderen Stack erwähnt habe Überlaufpost . Ich habe meine Vorlage dir auf github als Teil meiner git-tools Sammlung.

Außerdem habe ich festgestellt, dass ich in meiner Shell-Prompt-Logik, die bereits den Git-Status zur Eingabeaufforderung hinzufügt, eine große, fette Warnung ausgeben kann, wenn ich in eine Sandbox cdde, die nicht% co_de hat % Wert konfiguriert.

In meinem user.email :

%Vor%

Dies erzeugt eine leicht sichtbare Warnung:

    
Marc Liyanage 06.11.2013 23:43
quelle
1

Es sieht nicht so aus, als ob das möglich ist. Von git-commit-tree(1) :

%Vor%

Vielleicht ist es einfacher für Sie, Umgebungsvariablen für jede Sandbox zu konfigurieren?

    
Thomas 06.11.2013 20:22
quelle
1

Es wäre sehr hokey und könnte in Randfällen brechen, aber Sie könnten einen systemweiten post-commit Hook schreiben, der den Autor des neuen Commits betrachtet und ihn rückgängig macht (via git reset ), wenn es sich um einen Schein handelt.

Anders als das, nein, Git ist glücklich, irgendeine lächerliche E-Mail-Adresse zu verwenden, die es zusammen als Standard verschmilzt.

    
Eevee 06.11.2013 21:22
quelle

Tags und Links