Невозможно получить доступ к "git / attributes"

89

Что означает предупреждение remote: warning: unable to access '/root/.config/git/attributes': Permission deniedи какие последствия оно несет?

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

Должен ли я сообщать хостеру о потенциальных проблемах с инфраструктурой?

Василевы
источник
Удалось ли вам это решить?
mu 無
@mu 無 Нет, я не хочу сообщать об ошибке на хостинге по этому поводу, поскольку у меня до сих пор нет окончательного ответа.
Basilevs

Ответы:

188

Я сам столкнулся с этой ситуацией. Убедившись, что он просматривает, ~/.config/я заметил, что владельцем этой папки был root. Я изменил это на, my_user_nameи это сработало.

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

Это также помогает узнать причину: этот каталог создается при первом запуске программы, которая его использует. Если команда была запущена от имени root, это вызовет проблему с разрешениями.

Например, если ~/.configкаталог еще не существует, а вы запускаете sudo htop, каталоги ~/.configи ~/.config/htopбудут созданы и принадлежать ему root. После этого обычная команда git не сможет получить доступ ~/.configи выдаст указанное выше предупреждение. (Кредит: пользователь mehtunguh)

-RВариант с chownзаключается в изменении разрешения рекурсивно. Это поможет, если у вас есть подпапки в~/.config

Черный овощной
источник
6
это также помогло мне при использовании командной строки linux внутри Windows 10 - спасибо!
lukaszkups
1
это было здорово сэкономить время
Притхви Радж Вуппалапати
7
Это также помогает узнать причину - этот каталог создается при первом запуске программы, которая его использует. Если команда была запущена от имени root, это вызовет проблему с разрешениями. Например, если ~/.configкаталог еще не существует, а вы запускаете sudo htop, каталоги ~/.configи ~/.config/htopбудут созданы и принадлежать пользователю root. Тогда обычная gitкоманда не сможет получить доступ ~/.configи выдаст это предупреждение.
mehtunguh
1
@mehtunguh Пожалуйста, подумайте о добавлении этого к моему ответу! Безусловно, это ценная информация.
BlackVegetable
@mehtunguh Я добавил ваше понимание этого ответа. Еще раз спасибо.
BlackVegetable
9

Я думаю, что ваша HOMEпеременная envireonment установлена ​​неправильно.

Из темы группы Google ,

переменная окружения HOME была установлена /rootтак, чтобы она просматривалась, /root/.gitconfigили /root/.config/git/configпоскольку непривилегированный пользователь не имел к /rootней доступа, вызывало ошибку.

Итак, решение заключалось в том, чтобы я установил HOME env в каталог HOME пользователя.

mu 無
источник
2

Git пытается прочитать конфигурацию из root, а не из пользовательской конфигурации. Убедитесь, что переменные вашей среды имеют правильный набор конфигурации git или доступен файл .gitconfig в вашей домашней папке.

Vishal
источник
Вызваны ли этим какие-либо потенциальные проблемы?
Basilevs
2

Перейти в корневой каталог

cd ~/

Напишите следующий код:

sudo chown -R username /Users/username

Где username - это имя пользователя вашей системы.

Арти Прасад
источник
Этот ответ на вопрос «Следует ли мне изменить владельца папки .config, которая находится в моем собственном домашнем каталоге?» Является актуальным. askubuntu.com/questions/852265/…
CodingMatters
0

Я столкнулся с аналогичной проблемой и смог исправить ее на стороне сервера. git работает там под uwsgi, поэтому я добавил в конфигурацию uwsgi следующую строку:

env = HOME=/srv/git

где / srv / git принадлежит тому же uid, под которым запущен и создан uwsgi. chmod u+rwX /srv/git Итак, вам нужно указать переменную HOME на стороне сервера для процесса, который запускает git, в каталог, в котором этот процесс будет иметь разрешения на чтение / запись / перемещение.

Phaoost
источник
0

Для Windows это может быть случай, когда какой-то процесс, например CMD или SSH-клиент, открыл какую-то папку, которую Git пытается удалить.

Олег Неумывакин
источник