Há muita configuração para esta questão:
Eu tenho um host ( rpi5.local
) com 2 contas de usuário: pi
e cake
.
Eu queria explorar git
e criei a cake
conta para "possuir" os repositórios "servidor/origem". Como usuário cake
, em /home/cake
, criei uma pasta ( git-srv
) com uma subpasta chamada projectA
. Passei pelo processo de inicialização deste repositório usando git init --bare
.
Inicialmente, "preenchi" o projectA
repositório no servidor de outro host ( rpi4b.local
). Enviei push
alguns arquivos em uma pasta chamada Aproject
no raspberrypi4b.local
host para o projectA
repositório via SSH usando esta sequência:
$ hostname
rpi4b.local
$ pwd
/home/pi/Aproject
$ git push -u ssh://[email protected]/home/cake/git-srv/projectA.git
Isso funcionou bem.
Como usuário pi
, clone
transferi o projectA
repositório para uma pasta no arquivo /home/pi/XYZ
. Fiz & commit
editei algumas alterações em um dos arquivos /home/pi/XYZ
e tentei fazer push
essas alterações no servidor da seguinte maneira:
$ hostname
rpi5.local
$ pwd
/home/pi/XYZ
$ git push -u /home/cake/git-srv/projectA.git
Recebi um erro com este esforço:
...
error: remote unpack failed: unable to create temporary object directory
To /home/cake/git-srv/projectA.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '/home/cake/projectA.git'
Depois de pesquisar um pouco sobre esse erro, concluí que era um problema de permissão entre pi
e cake
. Achei que a solução seria su cake
as user pi
, então fiz isso e tentei push
novamente. E finalmente, minha pergunta:
$ whoami
cake
$ hostname
rpi5.local
$ pwd
/home/pi/XYZ
$ git push -u /home/cake/git-srv/projectA.git
fatal: failed to stat '/home/pi/motd.git': Permission denied
O que failed to stat
significa nesta situação e existe uma solução simples ?
“Failed to stat” significa que uma chamada para
stat
retornou um erro, ou seja , que o usuário que está executandogit
não tem permissão para obter informações sobre o/home/pi/motd.git
. Presumivelmente, isso ocorre porque ocake
usuário não tem acesso ao/home/pi
.Em vez de tentar encontrar o conjunto correto de permissões neste caso, acho que a abordagem mais direta é usar o SSH novamente (mesmo que seja o mesmo sistema):
git push ssh://git@localhost:/home/cake/git-srv/projectA.git
ougit push ssh://cake@localhost:git-srv/projectA.git
.