git push falha com remote: error: hook recusado para atualizar refs / heads / master

9

Recentemente, estou tentando iniciar meu próprio projeto em um repositório git da comunidade e estou tendo algumas complicações. Eu sou novo no git, mas aqui está o que eu tenho tentado fazer para testá-lo.

Eu executo os seguintes comandos e todos eles funcionam ok.

git config --global user.name "MYNAME"
git config --global user.email "MYEMAIL"
mkdir testproject
cd testproject
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin [email protected]:community/testproject.git

e todos os comandos acima são executados sem erros. No entanto, quando executo o próximo comando, recebo um erro enorme.

git push -u origin master

e o erro é

Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://git.xxxxxx.org': MYEMAIL
Password for 'http://[email protected]': 
remote: /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://git.xxxxxx.org/community/testprojact.git'

Não tenho muita certeza do que fazer a partir daqui, mas qualquer ajuda é muito apreciada.

Além disso, estou executando o Arch, se isso importa.

Edit: Eu tentei reinstalar o rake e não funcionou. Minha versão atual do rake era 10.1.1, então tentei removê-lo e substituí-lo pela versão 10.1.0 e isso também não foi corrigido.

No entanto, ao instalar o rake, recebi um erro:

WARNING:  You don't have /home/josh/.gem/ruby/2.0.0/bin in your PATH,
          gem executables will not run.

Isso poderia estar contribuindo para o problema?

Joshua Strot
fonte

Respostas:

9

O fato de o controle remoto ter recusado receber os dados é apenas um efeito colateral do problema real - o git pensa que foi negado porque um dos ganchos no terminal remoto falhou com um status de saída> 0 (você pode ver o que estava no Rastreio de Ruby). Parece que um dos ganchos tenta usar rakee não consegue encontrá-lo. Provavelmente não é um problema com seu repositório específico. Essa mensagem também não é do seu computador local - observe que ela é prefixada com "remoto", é o remoto que está faltando rake; portanto, provavelmente apenas um administrador de sistema desse lado pode corrigir o problema.

Eu sugiro que você entre em contato com quem gerencia seu repositório git da comunidade.

Chris Down
fonte
Era exatamente o que eu estava pensando. Nenhum dos ganchos no meu repositório git está ativo e, até agora, nada que eu fiz parece mudar o erro ou criar novos. Vou entrar em contato com o proprietário do repositório e ver se ele tem alguma informação sobre o problema.
Joshua Strot
Acontece que o problema era que eu estava tentando usar o método HTTP que não é suportado no GitLab. Você precisa pressionar o SSH, o que funciona maravilhosamente. Eu tenho que dizer, eu não esperava que,
Joshua Strot
0

Eu acredito que este é o seu problema.

remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)

Procure esse erro. Encontrei estas perguntas e respostas no SO, intituladas: error: hook recusou-se a atualizar refs / heads / external_pub enquanto pressionava um ramo .

Parece que há um gancho git no servidor que está rejeitando o envio.

excerto

Ganchos do lado do servidor

Além dos ganchos do lado do cliente, você pode usar alguns ganchos importantes do lado do servidor como administrador do sistema para impor praticamente qualquer tipo de política para o seu projeto. Esses scripts são executados antes e depois dos envios para o servidor. Os ganchos pré podem sair diferentes de zero a qualquer momento para rejeitar o envio e imprimir uma mensagem de erro de volta ao cliente; você pode configurar uma política de envio que seja tão complexa quanto desejar.

Para determinar por que você está recebendo essa mensagem de erro, precisará descobrir qual gancho está enganando você. Os ganchos são armazenados na hookspasta dentro da pasta git (na extremidade do servidor remoto) - encontre o pre-receivegancho ou o updategancho e verifique se o que está causando seu problema.

slm
fonte
Dentro da pasta hooks, tenho vários arquivos com a extensão .sample. Não tenho um gancho de pré-recebimento, no entanto, há um gancho de atualização. Como todos eles têm a extensão .sample, porém, não acredito que nenhum deles esteja em uso, então pode ser que seja um gancho no servidor que está me rejeitando? Procurei on-line e algumas pessoas com o meu problema o resolveram fazendo várias coisas, nenhuma das quais no meu caso.
Joshua Strot
0

Verificar função / grupo e permissão no repositório GIT Meu caso, apenas a permissão vermelha e sua resolução após o acesso de leitura / gravação fornecido pela equipe do repositório GIT

Radhakrishnan
fonte
0

O @Radhakrishnan já sugeriu, você pode estar enfrentando um problema de permissão.

Caso você esteja usando o Redmine Git Hosting , verifique se a função de gerente de permissões do projeto foi atribuída ao usuário que está tentando reescrever as referências de rastreamento do seu git.

Observe que presumo que você esteja ciente do impacto da força de push do git nos outros usuários que possam compartilhar o mesmo ramo remoto. Para mais detalhes, consulte este artigo

Julio Nobre
fonte