filemode - git tag push




Shell-Variablenerweiterung in git config (2)

Ich habe eine Shell-Variable, die auf das Verzeichnis verweist, in dem sich alle meine Konfigurationsdateien befinden. Nehmen wir an, die Variable wird mit export RC=$HOME/rc . Ich habe eine globale Ignorierdatei im Konfigurationsverzeichnis: ~/rc/globalgitignore .

Meine Frage ist, wie kann ich die RC Variable in meiner .gitconfig Datei erweitern?

Ich habe bereits folgendes versucht:

  • excludesfile = $RC/globalgitignore

  • excludesfile = !$RC/globalgitignore

  • excludesfile = !echo $RC/globalgitignore

  • excludesfile = !$(echo $RC/globalgitignore)

Keine dieser Lösungen funktioniert.

Das funktioniert nur, wenn ich den vollständigen Pfad excludesfile = ~/rc/globalgitignore : excludesfile = ~/rc/globalgitignore , aber dann muss ich den Pfad ändern, wenn ich mein rc Verzeichnis an einen anderen Ort verschiebe.


Du kannst nicht. git-config (1) unterstützt keine Erweiterung der Umgebungsvariablen, sondern nur eine eingeschränkte Typkonvertierung und Pfaderweiterung:

Der Typbezeichner kann entweder --int oder --bool sein, um git config sicherzustellen, dass die Variable (n) vom gegebenen Typ sind und den Wert in die kanonische Form konvertieren (einfache Dezimalzahl für int, ein "true" oder) "false" string für bool) oder --path, die eine Pfaderweiterung ausführt (siehe --path unten). Wenn kein Typspezifizierer übergeben wird, werden keine Prüfungen oder Transformationen für den Wert ausgeführt.

Die Dokumentation für --path states:

--Pfad

git-config erweitert führend ~ auf den Wert von $ HOME und ~ user auf das Home-Verzeichnis für den angegebenen Benutzer . Diese Option hat keine Auswirkungen, wenn Sie den Wert festlegen (Sie können jedoch git config bla ~ / von der Befehlszeile aus verwenden, damit Ihre Shell die Erweiterung ausführt).

Der Begriff "Erweiterung" erscheint in git-config(1) nicht in einem anderen Kontext. Wie bist du auf die Idee gekommen, dass es so sein sollte, da kein solches Feature irgendwo dokumentiert ist?

Um Umgebungsvariablen zu erweitern, müssen Sie die Git-Konfigurationsdatei selbst vorverarbeiten, dh indem Sie eine Vorlagendatei erstellen und Variablen mit einem Skript erweitern, bevor Sie die Datei in Ihr $HOME Verzeichnis kopieren.

Wenn es um die Verwaltung von Datendateien geht, dann tun Sie, was alle Leute tun: Legen Sie sie in ein Verzeichnis und fügen Sie symbolische Verknüpfungen zu diesem Verzeichnis von Ihrem $HOME .


Ich benutze Bash-Skripte in meiner Konfiguration, um eine variable Erweiterung zu ermöglichen. Exportieren Sie einfach die Variable, die Sie benötigen, in Ihre .bashrc und verwenden Sie sie in den Skripten:

In meinem ~ / .bashrc:

export TESTVARIABLE="hello"

In meiner ~ / .gitconfig:

[alias]
    test = !bash -c '"echo \"Value: $TESTVARIABLE\";"'

Bei meiner Bash-Eingabeaufforderung:

bash> git test
    Value: hello 

Die andere Möglichkeit besteht darin, einen Befehl git config in die Shell rc einzufügen. Ich habe zum Beispiel in meinem .bashrc:

git config --global user.name "[email protected]$HOSTNAME"

Ich habe die gleiche Konfiguration auf allen meinen Maschinen, und indem ich das hinzufüge, kann ich zwischen commits von verschiedenen Maschinen unterscheiden. Sie könnten das gleiche tun und zu Ihrer Shell rc hinzufügen:

export RC="$HOME/rc"
git config --global core.excludesfile "$RC/globalgitignore" 




shell