Stocker git config dans le cadre du référentiel

148

J'utilise des filtres pour modifier les fichiers lors du paiement, comme décrit ici . Maintenant, le problème est que la définition de filtre n'est stockée que dans mon fichier de configuration local:

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

Si mes collègues souhaitent bénéficier de cette Dateextension, ils doivent copier ma définition de filtre. Et si je le change, je dois le notifier, etc.

Puis-je stocker cette partie de définition de filtre .git/configdans le référentiel et faire en sorte que git l'utilise?

Zaar Hai
la source
Vous pouvez trouver ce lien utile pour partager automatiquement une configuration à l'échelle de l'équipe.
mljrg

Réponses:

163

Il y a 3 champs de prises en charge .gitconfigfichier: --system, --global, --local. Vous pouvez également créer un fichier de configuration personnalisé et l'inclure dans l'un des fichiers pris en charge.

Pour vos besoins personnalisés - est le bon choix. Au lieu d'écrire votre filtre, .git/configvous devez l'enregistrer dans un .gitconfigfichier à la racine de votre référentiel:

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

Créez le .gitconfigavec votre filtre et validez les modifications. Ensuite, vos collègues le tiendront toujours à jour - mais ils devront l'inclure manuellement. Il n'est pas possible d'inclure automatiquement votre fichier de configuration personnalisé via git seul, car cela crée une vulnérabilité de sécurité.

Pour appliquer cette configuration à un référentiel unique, chaque utilisateur devra exécuter la commande suivante dans your-repo/:

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

Veillez à ne pas stocker de données personnelles dans la coutume .gitconfig, comme user.*, conservez-les dans votre global .gitconfig.

Alexander Yancharuk
la source
40
Je veux éviter de notifier à chaque utilisateur potentiel qu'il doit inclure des dépôts .gitconfigdans le sien ~/.gitconfig. Personne ne s'en souviendra. Existe-t-il un moyen de faire en sorte que git lise TOUJOURS le dépôt .gitconfig.
Zaar Hai
9
@ZaarHai: Je suppose que non, car ce serait dangereux. (Imaginez le clonage d'un dépôt qui alias les commandes avec quelque chose d '"intéressant", par exemple exporter le contenu de votre répertoire personnel). Si vous avez quelque chose comme un configurescript ou similaire que les utilisateurs doivent exécuter, vous pouvez avoir défini l'inclusion (ou l'inviter à).
Hasturkun
4
@HenryBlyth il semble y avoir une --fileoption activée git config, vous pouvez ensuite la définir pour qu'elle pointe sur votre dépôt .gitconfig. Je ne l'ai pas encore testé, mais il semble répondre à votre question. Vous pouvez le lire sur la documentation. git-scm.com/docs/git-config#FILES
theUnknown777
12
Soyez génial si Git ne suppose pas que vous écrivez du code distribué en dehors de votre organisation où vous devez vous soucier des menaces de sécurité. Parfois, la convivialité et l'automatisation du système ont une priorité plus élevée que la sécurité.
Geordie
2
Vous pouvez ajouter sournoisement la commande à une tâche (en supposant que vous utilisez un exécuteur de tâches) couramment utilisée par votre équipe.
Mieszko
19

Vous ne pouvez pas utiliser de .gitconfigfichier dans un référentiel git par défaut, mais vous pouvez créer un lien vers celui-ci afin que la configuration git soit versionnée.

Vous pouvez créer un lien vers celui-ci comme ça:

[include]
  path = ../.gitconfig

J'ai créé un script simple gitconfig.shqui le fait pour vous (beaucoup plus rapide que la copie) + un .gitconfigfichier simple , donc si vous le souhaitez, jetez un œil à ce repo https://github.com/HoBi/dotfiles .


EDIT : J'ai supprimé le fichier, mais vous pouvez le trouver ici https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

Tenhobi
la source
@XmlmXmlmX corrigé. :-)
tenhobi
@HoBi il semble que vous ayez maintenant supprimé votre gitconfig.sh de GitHub, une raison pour laquelle vous n'en vouliez plus?
Novice C du
1
@NoviceC Il y a le fichier si vous le voulez. github.com/HoBi/dotfiles/blob/ ... J'en suis venu à croire que vous ne devriez pas stocker .gitconfig ou gitconfig.sh dans votre projet git - ce sont des paramètres personnels et doivent être stockés dans vos paramètres globaux dans un ~/dossier. Et tout le monde peut avoir des besoins différents, alors pourquoi déranger tout le monde avec votre configuration dans git repo. :-)
tenhobi
@tenhobi il y a des configurations qui pourraient être intéressantes pour tout le monde à partager dans un projet. Je vais le faire pour les alias, avec le flux de codage du projet
Z. Khullah