Impossible d'accéder à 'git / attributes'

89

Que signifie l'avertissement remote: warning: unable to access '/root/.config/git/attributes': Permission deniedet quelles implications cela a-t-il?

$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.

Dois-je signaler un problème d'infrastructure potentiel à l'hébergeur?

Basilevs
la source
Avez-vous pu résoudre ce problème?
mu 無
@mu 無 Non, je suis réticent à signaler un bug sur l'hébergement à ce sujet car je n'ai toujours pas de réponse définitive.
Basilevs

Réponses:

188

J'ai moi-même rencontré cette situation. Après avoir vérifié qu'il recherchait, ~/.config/j'ai remarqué que le propriétaire de ce dossier était root. J'ai changé cela my_user_nameet cela a fonctionné.

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

Il est également utile d'en connaître la cause: ce répertoire est créé la première fois que vous exécutez un programme qui l'utilise. Si la commande a été exécutée en tant que root, cela provoquera ce problème d'autorisations.

Par exemple, si le ~/.configrépertoire n'existe pas encore, et que vous exécutez sudo htop, les répertoires ~/.configet ~/.config/htopseront créés et détenus par root. Ensuite, une commande git régulière ne pourra pas accéder ~/.configet donnera l'avertissement ci-dessus. (Crédit: user mehtunguh)

L' -Roption avec chownest de modifier les permissions de manière récursive. Cela vous aidera si vous avez des sous-dossiers sous~/.config

NoirLégume
la source
6
cela m'a également aidé lors de l'utilisation de la ligne de commande Linux dans Windows 10 - merci!
lukaszkups
1
c'était un bon gain de temps
Prithvi Raj Vuppalapati
7
Il est également utile de connaître la cause - Ce répertoire est créé la première fois que vous exécutez un programme qui l'utilise. Si la commande a été exécutée en tant que root, cela provoquera ce problème d'autorisations. Par exemple, si le ~/.configrépertoire n'existe pas encore, et que vous exécutez sudo htop, les répertoires ~/.configet ~/.config/htopseront créés et détenus par root. Ensuite, une gitcommande régulière ne peut pas accéder ~/.configet donnera cet avertissement.
mehtunguh
1
@mehtunguh Pensez à ajouter ceci à ma réponse! C'est une information précieuse pour être sûr.
BlackVegetable
@mehtunguh J'ai ajouté votre perspicacité dans cette réponse. Merci encore.
BlackVegetable
9

Je pense que votre HOME variable d'environnement est mal définie.

À partir du fil de discussion du groupe Google ,

la variable d'environnement HOME a été définie sur /rootainsi elle a regardé /root/.gitconfigou /root/.config/git/configpuisque l'utilisateur non privilégié n'avait pas accès à/root a généré une erreur.

La solution était donc pour moi de définir l'environnement HOME dans le répertoire HOME de l'utilisateur

mu 無
la source
2

Git essaie de lire la configuration à partir de la racine au lieu de la configuration de l'utilisateur. Veuillez vérifier que vos variables d'environnement ont le bon jeu de configuration git ou que le fichier .gitconfig de votre dossier personnel est accessible.

Vishal
la source
Y a-t-il des problèmes potentiels causés par cela?
Basilevs
2

Aller au répertoire racine

cd ~/

Écrivez le code suivant:

sudo chown -R username /Users/username

Où nom d'utilisateur est le nom d'utilisateur de votre système.

Arti Prasad
la source
Cette réponse à "Dois-je changer la propriété du dossier .config qui se trouve dans mon propre répertoire personnel?" Est pertinente. askubuntu.com/questions/852265/…
CodingMatters
0

J'ai couru le problème similaire et j'ai pu le résoudre côté serveur. git y fonctionne sous uwsgi donc j'ai ajouté dans uwsgi config la ligne suivante:

env = HOME=/srv/git

où / srv / git appartient au même uid sous lequel uwsgi s'exécute et est créé chmod u+rwX /srv/git Ainsi, vous devez pointer la variable HOME côté serveur pour le processus qui exécute git vers le répertoire où ce processus aura des autorisations de lecture / écriture / traversée.

phaoost
la source
0

Pour Windows, il peut s'agir d'un cas où un processus comme CMD ou un client SSH a ouvert un dossier que Git tente de supprimer.

Oleg Neumyvakin
la source