Armazenando a configuração do git como parte do repositório

147

Estou usando filtros para alterar arquivos durante a finalização da compra, como descrito aqui . Agora, o problema é que a definição de filtro é armazenada apenas no meu arquivo de configuração local:

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

Se meus colegas de trabalho quiserem se beneficiar com isso Date expansão, precisam copiar minha definição de filtro. E se eu mudar, preciso notificá-los, etc.

Então, posso armazenar essa definição de filtro como parte do .git/configrepositório e fazer com que o git a use?

Zaar Hai
fonte
Você pode achar esse link útil para compartilhar automaticamente uma configuração de toda a equipe.
mljrg 10/07

Respostas:

163

Existem 3 escopos suportadas do .gitconfigarquivo: --system, --global, --local. Você também pode criar um arquivo de configuração personalizado e incluí-lo em um dos arquivos suportados.

Para suas necessidades personalizadas - é a escolha certa. Em vez de escrever seu filtro .git/config, salve-o em um .gitconfigarquivo na raiz do seu repositório:

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

Crie o .gitconfigcom seu filtro e confirme as alterações. Seus colegas sempre o manterão atualizado - mas terão que incluí-lo manualmente. Não é possível incluir automaticamente seu arquivo de configuração personalizado apenas através do git, porque isso cria uma vulnerabilidade de segurança.

Para aplicar essa configuração a um único repositório, cada usuário precisará executar o seguinte comando em your-repo/:

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

Cuidado para não armazenar dados pessoais no costume .gitconfig, como user.*manter esses dados em seu mundo .gitconfig.

Alexander Yancharuk
fonte
40
Quero evitar notificar cada usuário possível de que ele precisa incluir repositórios .gitconfignos dele ~/.gitconfig. Ninguém vai se lembrar disso. Existe uma maneira de fazer git para sempre ler o repo do .gitconfig.
Zaar Hai
9
@ZaarHai: Acho que não, porque isso seria perigoso. (Imagine clonar um repositório que apelide os comandos com algo "interessante", por exemplo, exportando o conteúdo do seu diretório home). Se você tem algo como um configurescript ou semelhante que os usuários devem executar, você pode definir o include (ou solicitar ao usuário).
precisa saber é o seguinte
4
@HenryBlyth parece haver uma --fileopção git configativada, você pode configurá-la para apontar nos seus repositórios .gitconfig. Ainda não testei, mas parece responder à sua pergunta. Você pode lê-lo nos documentos. O que você precisa
saber é que você pode
12
Seja ótimo se o Git não assumir que você está escrevendo um código distribuído fora da sua organização, onde você precisa se preocupar com ameaças à segurança. Às vezes, a usabilidade e a automação do sistema têm uma prioridade mais alta que a segurança.
Geordie
2
Você pode adicionar sorrateiramente o comando a uma tarefa (supondo que você esteja usando um executor de tarefas) usado rotineiramente por sua equipe.
Mieszko
19

Você não pode usar o .gitconfigarquivo em um repositório git por padrão, mas pode vincular a ele para que a configuração do git seja versionada.

Você pode vincular a ele assim:

[include]
  path = ../.gitconfig

Eu criei um script simples gitconfig.shque faz isso por você (muito mais rápido que a cópia) + .gitconfigarquivo simples; portanto, se você quiser, dê uma olhada neste repositório https://github.com/HoBi/dotfiles .


EDIT : Excluí o arquivo, mas você pode encontrá-lo aqui https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

tenhobi
fonte
@XmlmXmlmX corrigido. :-)
tenhobi
@HoBi, parece que você já excluiu seu gitconfig.sh do GitHub, qualquer motivo para não o querer mais?
Novato C
1
@NoviceC Existe o arquivo, se você quiser. github.com/HoBi/dotfiles/blob/… Acredito que você não deve armazenar .gitconfig ou gitconfig.sh no seu projeto git - essas são configurações pessoais e devem ser armazenadas nas configurações globais da ~/pasta. E todo mundo pode ter uma necessidade diferente, então por que incomodar todo mundo com sua configuração no git repo. :-)
tenhobi 29/09/16
@ tenhobi existem algumas configurações que podem ser interessantes para todos compartilharem em um projeto. Vou fazê-lo por aliases, com fluxo de codificação do projeto
Z. Khullah