Speichern der Git-Konfiguration als Teil des Repositorys

147

Ich verwende Filter, um Dateien während des Auscheckens zu entstellen, wie hier beschrieben . Das Problem ist nun, dass die Filterdefinition nur in meiner lokalen Konfigurationsdatei gespeichert ist:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"

Wenn meine Mitarbeiter von dieser DateErweiterung profitieren möchten , müssen sie meine Filterdefinition kopieren. Und wenn ich es ändere, muss ich sie benachrichtigen, etc ..

Kann ich diesen Teil der Filterdefinition .git/configim Repository speichern und Git dazu bringen, ihn zu verwenden?

Zaar Hai
quelle
Sie können feststellen , diesen Link nützlich , um automatisch ein Team weite Konfiguration zu teilen.
mljrg

Antworten:

162

Es gibt 3 unterstützte .gitconfigDateibereiche : --system, --global, --local. Sie können auch eine benutzerdefinierte Konfigurationsdatei erstellen und in eine der unterstützten Dateien aufnehmen.

Für Ihre Bedürfnisse individuell - ist die richtige Wahl. Anstatt Ihren Filter .git/configeinzuschreiben, sollten Sie ihn in einer .gitconfigDatei in Ihrem Repository-Stammverzeichnis speichern :

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

Erstellen Sie das .gitconfigmit Ihrem Filter und übernehmen Sie die Änderungen. Dann werden Ihre Kollegen es immer auf dem neuesten Stand halten - aber sie müssen es manuell einbinden. Es ist nicht möglich, Ihre benutzerdefinierte Konfigurationsdatei allein über git automatisch einzuschließen, da dies zu einer Sicherheitslücke führt.

Um diese Konfiguration für ein einzelnes Repository anzuwenden, muss jeder Benutzer den folgenden Befehl ausführen your-repo/:

git config --local include.path ../.gitconfig

Achten Sie darauf , keine personenbezogenen Daten in den benutzerdefinierten zu speichern .gitconfig, wie user.*, halten die in Ihrem globalen .gitconfig.

Alexander Yancharuk
quelle
40
Ich möchte vermeiden, jeden möglichen Benutzer darüber zu informieren, dass Repos .gitconfigin seine aufgenommen werden müssen ~/.gitconfig. Niemand wird sich daran erinnern. Gibt es eine Möglichkeit git zu machen, immer den Repo lesen .gitconfig.
Zaar Hai
9
@ZaarHai: Ich vermute nein, denn das wäre gefährlich. (Stellen Sie sich vor, Sie klonen ein Repo, das Befehle mit etwas "Interessantem" aliasisiert, z. B. den Inhalt Ihres Home-Verzeichnisses exportiert.) Wenn Sie so etwas wie ein configureSkript oder ähnliches haben, das Benutzer ausführen müssen, können Sie das Include festlegen (oder den Benutzer dazu auffordern).
Hasturkun
4
@HenryBlyth es scheint eine --fileOption zu geben git config, Sie können sie dann so einstellen, dass sie auf Ihre Repos zeigt .gitconfig. Ich habe es noch nicht getestet, aber es scheint Ihre Frage zu beantworten. Sie können es in den Dokumenten lesen. git-scm.com/docs/git-config#FILES
theUnknown777
12
Seien Sie großartig, wenn Git nicht davon ausgegangen ist, dass Sie Code schreiben, der außerhalb Ihrer Organisation verteilt ist und in dem Sie sich um Sicherheitsbedrohungen kümmern müssen. Manchmal hat die Benutzerfreundlichkeit und Automatisierung des Systems eine höhere Priorität als die Sicherheit.
Geordie
2
Sie können den Befehl einer Aufgabe hinzufügen (vorausgesetzt, Sie verwenden einen Task Runner), die routinemäßig von Ihrem Team verwendet wird.
Mieszko
19

Sie können .gitconfigstandardmäßig keine Datei in einem Git-Repository verwenden, aber Sie können eine Verknüpfung dazu herstellen, damit die Git-Konfiguration versioniert wird.

Sie können so darauf verlinken:

[include]
  path = ../.gitconfig

Ich habe ein einfaches Skript erstellt, gitconfig.sh das dies für Sie erledigt (viel schneller als das Kopieren) + eine einfache .gitconfigDatei. Wenn Sie möchten, schauen Sie sich dieses Repo an: https://github.com/HoBi/dotfiles .


BEARBEITEN : Ich habe die Datei gelöscht, aber Sie finden sie hier https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

Tenhobi
quelle
@XmlmXmlmX behoben. :-)
Tenhobi
@HoBi es scheint, dass Sie jetzt Ihre gitconfig.sh von GitHub gelöscht haben, irgendeinen Grund, warum Sie es nicht mehr wollten?
Anfänger C
1
@ NoviceC Es gibt die Datei, wenn Sie es wollen. github.com/HoBi/dotfiles/blob/… Ich bin zu der Überzeugung gelangt, dass Sie .gitconfig oder gitconfig.sh nicht in Ihrem Git-Projekt speichern sollten - dies sind persönliche Einstellungen und sollten in Ihren globalen Einstellungen im ~/Ordner gespeichert werden . Und jeder hat möglicherweise andere Bedürfnisse. Warum also alle mit Ihrer Konfiguration in Git Repo belästigen? :-)
Tenhobi
@tenhobi Es gibt einige Konfigurationen, die für jeden interessant sein könnten, um sie an einem Projekt zu teilen. Ich werde dies für Aliase tun, mit Projektcodierungsablauf
Z. Khullah