Memorizzare git config come parte del repository


148

Sto usando i filtri per manipolare i file durante il checkout come descritto qui . Ora il problema è che la definizione del filtro è memorizzata solo nel mio file di configurazione locale:

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

Se i miei colleghi vogliono beneficiare di questa Dateespansione, devono copiare la mia definizione di filtro. E se lo cambio, devo avvisarli, ecc.

Quindi posso archiviare questa parte della definizione del filtro .git/confignel repository e fare in modo che Git lo usi?


È possibile che questo collegamento sia utile per condividere automaticamente una configurazione a livello di team.
mljrg

Risposte:


163

Ci sono 3 ambiti supportate di .gitconfigfile: --system, --global, --local. Puoi anche creare un file di configurazione personalizzato e includerlo in uno dei file supportati.

Per le tue esigenze personalizzate - è la scelta giusta. Invece di scrivere il filtro, .git/configè necessario salvarlo nel .gitconfigfile nella radice del repository:

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

Crea il .gitconfigcon il tuo filtro e apporta le modifiche. Quindi i tuoi colleghi lo terranno sempre aggiornato, ma dovranno includerlo manualmente. Non è possibile includere automaticamente il file di configurazione personalizzato solo tramite git, poiché crea una vulnerabilità di sicurezza.

Per applicare questa configurazione per un singolo repository, ogni utente dovrà eseguire il comando seguente in your-repo/:

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

Fai attenzione a non archiviare i dati personali nell'usanza .gitconfig, ad esempio user.*conservandoli nel tuo globale .gitconfig.


40
Voglio evitare di informare ogni possibile utente che deve includere repository .gitconfignel suo ~/.gitconfig. Nessuno lo ricorderà. C'è un modo per fare in modo che Git legga SEMPRE i repository .gitconfig.
Zaar Hai,

9
@ZaarHai: Sto indovinando no, perché sarebbe pericoloso. (Immagina di clonare un repository che alias comanda con qualcosa di "interessante", ad es. Esportare i contenuti della tua home directory). Se hai qualcosa di simile a uno configurescript o simile che gli utenti devono eseguire, puoi impostare tale inclusione (o richiedere all'utente).
Hasturkun,

4
@HenryBlyth sembra esserci --fileun'opzione attiva git config, puoi quindi impostarla in modo che punti sul tuo repository .gitconfig. Non l'ho ancora testato, ma sembra rispondere alla tua domanda. Puoi leggerlo sui documenti. git-scm.com/docs/git-config#FILES
theUnknown777

12
Sii fantastico se Git non ha assunto che stai scrivendo codice distribuito all'esterno della tua organizzazione in cui devi preoccuparti delle minacce alla sicurezza. A volte l'usabilità e l'automazione del sistema ha una priorità maggiore rispetto alla sicurezza.
Geordie,

2
È possibile aggiungere di soppiatto il comando a un'attività (supponendo che si stia utilizzando un task runner) utilizzato abitualmente dal proprio team.
Mieszko,

19

Per .gitconfigimpostazione predefinita, non è possibile utilizzare il file in un repository git, ma è possibile collegarlo ad esso in modo che la configurazione di git venga aggiornata.

Puoi collegarti così:

[include]
  path = ../.gitconfig

Ho creato un semplice script gitconfig.sh che lo fa per te (molto più veloce della copia) + .gitconfigfile semplice , quindi se vuoi, dai un'occhiata a questo repository https://github.com/HoBi/dotfiles .


EDIT : ho cancellato il file, ma lo puoi trovare qui https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh


@XmlmXmlmX riparato. :-)
Tenhobi,

@HoBi sembra che tu abbia cancellato il tuo gitconfig.sh da GitHub, qualche motivo per cui non lo volevi più?
Principiante C,

1
@NoviceC C'è il file se lo vuoi. github.com/HoBi/dotfiles/blob/… Ho pensato che non dovresti archiviare .gitconfig o gitconfig.sh nel tuo progetto git - queste sono impostazioni personali e dovrebbero essere archiviate nelle tue impostazioni globali nella ~/cartella. E tutti potrebbero avere esigenze diverse, quindi perché disturbare tutti con la tua configurazione in git repo. :-)
tenhobi,

@tenhobi ci sono alcune configurazioni che potrebbero essere interessanti per tutti da condividere in un progetto. Lo farò per gli alias, con flusso di codifica del progetto
Z. Khullah,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.