Incapaz de acessar 'git / attribute'

95

O que remote: warning: unable to access '/root/.config/git/attributes': Permission deniedsignifica aviso e quais as implicações que isso traz?

$git clone git://git.eclipse.org/gitroot/egit/egit.git
Cloning into 'egit'...
remote: warning: unable to access '/root/.config/git/attributes': Permission denied
remote: Counting objects: 57926, done.
remote: Compressing objects: 100% (11872/11872), done.
remote: Total 57926 (delta 30734), reused 56308 (delta 29136)
Receiving objects: 100% (57926/57926), 32.29 MiB | 1021 KiB/s, done.
Resolving deltas: 100% (30734/30734), done.
Checking out files: 100% (1483/1483), done.

Devo relatar um possível problema de infraestrutura ao hoster?

Basilevs
fonte
Você conseguiu resolver isso?
mu 無
@mu 無 Não, estou relutante em relatar um bug na hospedagem sobre isso, pois ainda não tenho uma resposta definitiva.
Basilevs

Respostas:

198

Eu corri para essa situação sozinho. Depois de verificar que estava procurando ~/.config/, percebi que o dono dessa pasta era root. Eu mudei para my_user_namee funcionou.

cd ~/
ls -al
<Noticed .config was owned by root, unlike everything else in $HOME>
sudo chown -R $(whoami) .config

Também ajuda a saber a causa: esse diretório é criado na primeira vez que você executa um programa que o utiliza. Se o comando foi executado como root, isso causará este problema de permissões.

Por exemplo, se o ~/.configdiretório ainda não existir e você os executar sudo htop, os diretórios ~/.confige ~/.config/htopserão criados e pertencentes a root. Depois disso, um comando git regular não será capaz de acessar ~/.confige dará o aviso acima. (Crédito: usuário mehtunguh)

A -Ropção com chowné modificar as permissões recursivamente. Isso ajudará se você tiver subpastas em~/.config

BlackVegetable
fonte
6
que também me ajudou ao usar a linha de comando do Linux dentro do Windows 10 - obrigado!
lukaszkups
1
esta foi uma grande economia de tempo
Prithvi Raj Vuppalapati
7
Também ajuda a saber a causa - esse diretório é criado na primeira vez que você executa um programa que o usa. Se o comando foi executado como root, isso causará este problema de permissões. Por exemplo, se o ~/.configdiretório ainda não existir e você executar sudo htop, os diretórios ~/.confige ~/.config/htopserão criados e pertencentes ao root. Então, um gitcomando regular não pode acessar ~/.confige dará este aviso.
mehtunguh
1
@mehtunguh Por favor, considere adicionar isto à minha resposta! Esta é uma informação valiosa para ter certeza.
BlackVegetable,
@mehtunguh Eu adicionei sua visão sobre esta resposta. Obrigado novamente.
BlackVegetable
9

Acho que sua HOMEvariável de ambiente está definida incorretamente.

No tópico do grupo do google ,

a variável de ambiente HOME foi configurada para /rootolhar /root/.gitconfigou /root/.config/git/configporque o usuário sem privilégios não tinha acesso a /rootela gerou um erro.

Portanto, a solução para mim foi definir o env HOME para o diretório HOME do usuário

mu 無
fonte
2

Git está tentando ler a configuração do root em vez da configuração do usuário. Verifique se suas variáveis ​​de ambiente têm o git config definido correto ou o arquivo .gitconfig em sua pasta inicial está acessível.

Vishal
fonte
Há algum problema potencial causado por isso?
Basilevs
2

Vá para o diretório raiz

cd ~/

Escreva o seguinte código:

sudo chown -R username /Users/username

Onde nome de usuário é o nome de usuário do seu sistema.

Arti Prasad
fonte
Esta resposta para "Devo alterar a propriedade da pasta .config que está em meu próprio diretório inicial?" É relevante. askubuntu.com/questions/852265/…
CodingMatters
0

Corri um problema semelhante e consegui corrigi-lo no lado do servidor. git é executado sob uwsgi, então adicionei na configuração do uwsgi a seguinte linha:

env = HOME=/srv/git

onde / srv / git pertence ao mesmo uid sob o qual o uwsgi é executado e feito. chmod u+rwX /srv/git Portanto, você precisa apontar a variável HOME no lado do servidor para o processo que executa git para o diretório onde este processo terá permissões de leitura / gravação / passagem.

phaoost
fonte
0

Para Windows, pode ser o caso em que algum processo como o cliente CMD ou SSH abriu alguma pasta que o Git tenta excluir.

Oleg Neumyvakin
fonte