Est-il possible d’inclure un fichier dans votre fichier .gitconfig

J’aimerais inclure un fichier dans mon fichier .gitconfig qui contient mes parameters github – est-ce possible?

Puis-je faire quelque chose comme ça:

[core] include = /path/to/file 

Git (1.7.10+) supporte maintenant cette syntaxe dans .gitconfig :

 [include] path = /path/to/file 

Voir ici pour une description détaillée du changement de git et de ses cas extrêmes.

En passant, quelques subtilités méritent d’être signalées:

  1. L’expansion des variables d’environnement, par exemple $HOME , n’est pas prise en charge. (Expansion de ~ est apparu dans Git 1.7.10.2.)

  2. Si un chemin relatif est spécifié, il est relatif au fichier .gitconfig qui contient l’instruction [include] . Cela fonctionne correctement même avec les ~/.gitconfig enchaînées – par exemple, ~/.gitconfig peut avoir:

     [include] path = subdir/gitconfig 

    et subdir/gitconfig peut avoir:

     [include] path = nested_subdir/gitconfig 

    … ce qui provoquera le subdir/nested_subdir/gitconfig .

  3. Si git ne trouve pas le fichier cible, il ignore silencieusement l’erreur. Cela semble être par conception.

Mise à jour 2012:

Voir la réponse de Mike Morearty :

Comprend

Vous pouvez inclure un fichier de configuration à partir d’un autre en définissant la variable spéciale include.path sur le nom du fichier à inclure.
Le fichier inclus est développé immédiatement, comme si son contenu avait été trouvé à l’emplacement de la directive include.
Si la valeur de la variable include.path est un chemin relatif, le chemin est considéré comme relatif au fichier de configuration dans lequel la directive include a été trouvée.
La valeur de include.path est soumise à une extension de tilde: ~/ est étendu à la valeur de $HOME et ~user/ au répertoire de base de l’utilisateur spécifié.


Je ne pense pas.

Je préfère placer ce paramètre dans le fichier ~/.gitconfig

Fichier de configuration spécifique à l’utilisateur. Aussi appelé fichier de configuration “global”.

De cette façon, il complète le fichier spécifique au projet .gitconfig, sans être publié lorsqu’il est envoyé dans GitHub. Voir aussi cette réponse SO pour plus d’informations sur le fichier de configuration global.
Git a 3 fichiers de configuration .


Bjeanes ajoute dans les commentaires:

il semble que tout le monde a manqué le but de cette question.
David veut évidemment mettre en place un repo de tous ses fichiers de points ( bashrc , gemrc , etc.), y .gitconfig son .gitconfig pour qu’il puisse avoir tous ses parameters sur toutes ses machines.
Une façon de pousser des parties d’un fichier .gitconfig en incluant et en ignorant les entrées privées est ce qu’il (et moi, d’ailleurs) recherche.

Un moyen possible serait d’utiliser un pilote de filtre de purge / nettoyage pour déchiffrer / chiffrer un fichier avec des informations confidentielles confidentielles (voir ce fil de discussion ), afin de compléter un fichier local comme ~ / .gitconfig avec les parties déchiffrées pertinentes. fichier.

De cette façon, vous pouvez avoir un repository Git avec tous vos fichiers de points, plus un fichier contenant des informations chiffrées destinées à être déchiffrées et ajoutées aux fichiers de points.

texte alt

Dans .gitatsortingbutes (ou .git/info/a.. ), utilisez:

 myPrivateInfosFile filter=gpg diff=gpg 

Dans votre fichier repo .config:

 [filter "gpg"] smudge = gpg -d -q --batch --no-tty clean = gpg -ea -q --batch --no-tty -r C920A124 [diff "gpg"] textconv = decrypt 

(une solution basée sur GPG signifie, bien sûr, que vous avez communiqué vos clés privées / publiques par un autre moyen sur l’ordinateur de destination où vous souhaitez restaurer tous vos fichiers de points en clonant ce repository spécial)

En fait, dans votre cas, le script smudge doit être complété car il doit, après avoir déchiffré ce fichier, continuer et append des parties pertinentes à votre fichier global ~/.gitconfig (sauf si vous ~/.gitconfig fichier de configuration global avec un autre emplacement ) ou autre. fichiers de points pour cette question.

https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (les inconvénients de gpg sont abordés plus en détail dans ce fil de discussion ) (ceci est différent que d’avoir un repository Git complet, comme indiqué ici )

Vous pouvez le charger depuis la ligne de commande:

 $ git config --local include.path "/path/to/.gitconfig" 

Utilisez plutôt "$PWD"/.gitconfig si vous souhaitez charger le fichier à partir du répertoire en cours.

Après avoir exécuté la commande ci-dessus, les lignes suivantes sont ajoutées dans votre fichier .git/config :

 [include] path = /path/to/.gitconfig 

Je pense que vous pouvez accomplir cela en utilisant l’outil hub de defunkt . Ceci est un wrapper pour la commande git qui, entre autres choses, vous permet d’avoir des variables d’environnement GITHUB_USER et GITHUB_TOKEN . Qui remplacera les parameters du fichier .gitconfig local.

Ensuite, pour le rendre transparent, l’utilisateur que vous avez désigné alias alias git=hub dans sa configuration ZSH . Vous devriez être en mesure de générer un fichier local dans lequel vous définissez vos variables d’environnement et transférez votre référentiel vers le monde public avec toutes vos informations privées en contact.

** REMARQUE pour les utilisateurs de homebrew sur OSX, vous pouvez installer l’outil via le brew install hub .