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