Git Permissions Issue

1

Estou tendo algum tipo de problema com permissões git e espero que alguém possa ajudar. Toda vez que tento me comprometer, recebo o seguinte:

error: insufficient permission for adding an object to repository database .git/objects
error: Error building trees

Eu olhei para várias sugestões para resolver isso e eles basicamente ferver para certificar-se de não suas permissões estão quebradas na pasta .git. Confirmei que tenho permissões para tudo. Também verifiquei a saída de git config core.sharedRepository is true .

Alguém tem alguma sugestão?

    
por David 08.12.2016 / 22:39

1 resposta

2

Você de alguma forma estragou as permissões ou o proprietário ou o grupo. Este último deve ser o seu usuário ou o grupo do usuário, respectivamente.

Abra um terminal em seu repositório ou navegue nele. Então execute estes comandos:

sudo chown -R david .git
sudo chgrp -R david .git

Isso fará de você o proprietário e seu grupo o grupo de todos os arquivos na pasta .git . Supondo que seu nome de usuário seja david , é claro. Se não for, mude. Seu grupo tem o mesmo nome que seu usuário. Se você quiser aplicar isso ao seu repositório inteiro, basta substituir .git por . (um único período).

Se isso não resolver o problema, execute estas linhas:

find .git -type d -exec chmod 755 {} +
find .git -type f -exec chmod 644 {} +

A primeira linha fornece permissões completas para todos os diretórios e a segunda, as permissões para ler e gravar em arquivos na pasta .git . A primeira linha pode imprimir erros, informando-o - mais uma vez - sobre permissões insuficientes porque find não pode entrar em pastas antes que suas permissões tenham sido configuradas corretamente (se forem definidas totalmente erradas). Se isso acontecer, execute o primeiro comando novamente (antes de executar o segundo comando) até que ele não imprima mais erros. Evidentemente, você pode evitar isso executando o primeiro comando como root ( sudo find .git -type d -exec chmod 755 {} + ). Então, ele será executado sem erros na primeira vez em qualquer caso.

O segundo comando torna todos os arquivos na pasta .git não executáveis. Este não é um problema de você não usar ganchos. Se você fizer isso, você provavelmente quer executar

chmod +x .git/hooks/*

depois para dar os ganchos os bits de execução de volta. Se você não der a eles de volta, seus ganchos não serão mais executados. Fazer isso se você não usar ganchos não faz mal.

    
por UTF-8 08.12.2016 / 23:30