Automaticamente chmod um arquivo ao fazer git add?

2

Eu tenho um sistema de desenvolvimento do Ubuntu usando o git para gerenciar arquivos, mas eu gosto de fazer minha edição no QTCreator em um sistema diferente (windows), então eu tenho uma unidade de rede do windows mapeada para o servidor ubuntu.

No entanto, parece que sempre que eu salvar um arquivo, ele adiciona o sinalizador de execução às janelas. Às vezes muda de 664 para 764, e às vezes eu vi mudar para 777.

Então eu tenho feito um chmod 644 antes de fazer o meu git add, mas é um pouco chato e às vezes eu esqueço.

Existe uma boa maneira de impedir que o windows / QT adicione o + x, ou apenas "git add" automaticamente chmod 664 meus arquivos .c e .h antes de testar / confirmar?

Obrigado

    
por Jordan 22.11.2013 / 00:08

1 resposta

3

Editar:

Uma solução pode ser definir core.fileMode variable como false no seu ~/.gitconfig . Isso faz com que o git ignore o bit executável.

Se você estiver usando um sistema de arquivos FAT, talvez queira definir core.ignorecase para true também.

Resposta antiga

Assumindo que você confirmou na caixa Linux, você pode usar um gancho, neste caso .git/hooks/pre-commit :

#!/bin/sh
find . -type f -not -perm 0644 -exec chmod 644 {} \+
find . -type d -not -perm 0755 -exec chmod 755 {} \+
git add .

Isso é um pouco grosseiro no sentido de que força todos os arquivos e diretórios para uma determinada permissão. Você pode querer adicionar comandos chmod para arquivos específicos se eles precisarem de outras permissões entre find e git add . Por outro lado, é curto e simples.

Uma solução mais complexa pode usar git diff --cached --name-only para verificar quais arquivos serão realmente confirmados e consertar apenas aqueles. Mas isso seria mais complexo e não corrigiria mudanças aleatórias de permissão.

#!/bin/sh
FILES=$(git diff --cached --name-only)
chmod 644 $FILES
    
por 23.11.2013 / 01:17