git push завершается с ошибкой: ошибка: ловушка отказалась обновлять ссылки / заголовки / master

9

Недавно я пытался запустить свой собственный проект в сообществе git-репо, и у меня возникли некоторые сложности. Я новичок в Git, но вот что я пытался сделать, чтобы просто проверить это.

Я запускаю следующие команды, и все они работают нормально.

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 git@git.xxxxx.org:community/testproject.git

и все вышеперечисленные команды выполняются без ошибок. Однако, когда я запускаю следующую команду, я получаю огромную ошибку.

git push -u origin master

и ошибка есть.

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://MYEMAIL.com@git.xxxxxx.org': 
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'

Я не совсем уверен, что делать отсюда, но любая помощь очень ценится.

Кроме того, я управляю Arch, если это имеет значение.

Изменить: я попытался переустановить грабли, и это не сработало. Моя текущая версия rake была 10.1.1, поэтому я попытался удалить ее и заменить на версию 10.1.0, но это тоже не помогло.

Однако, когда я устанавливал грабли, я получил ошибку:

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

Может ли это способствовать проблеме?

Джошуа Строт
источник

Ответы:

9

То, что удаленный отказался принимать данные, является лишь побочным эффектом реальной проблемы - git думает, что это было отклонено, потому что одна из ловушек на удаленном конце потерпела неудачу со статусом выхода> 0 (вы можете увидеть, что это было в Ruby traceback). Кажется, что один из хуков пытается использовать rake, и не может его найти. Вероятно, это не проблема с вашим конкретным репо. Это сообщение также не с локального компьютера - обратите внимание , что он с префиксом «удаленный», это пульт , который отсутствует rake, поэтому возможно только сисадмин на той стороне может решить проблему.

Я бы посоветовал вам связаться с любым, кто управляет вашим git-репозиторием сообщества.

Крис Даун
источник
Это именно то, о чем я думал. Ни один из хуков в моем git-репо не активен, и пока что ничто из того, что я сделал, даже не исправляет ошибку и не создает новые. Я свяжусь с владельцем репо и посмотрю, есть ли у него какая-либо информация по проблеме.
Джошуа Строт
Оказалось, проблема была в том, что я пытался использовать метод HTTP, который не поддерживается в их GitLab. Вместо этого вы должны использовать SSH, что прекрасно работает. Я должен сказать, я не ожидал этого,
Джошуа Строт
0

Я считаю, что это ваша проблема.

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

Поиск этой ошибки Я натолкнулся на эти вопросы и ответы на SO под названием: error: hook отказался обновлять refs /heads / external_pub при нажатии на ветку .

Казалось бы, на сервере есть git hook, который отвергает push.

выдержка

Крюки на стороне сервера

В дополнение к хукам на стороне клиента, вы можете использовать пару важных хуков на стороне сервера в качестве системного администратора, чтобы применять практически любую политику для вашего проекта. Эти сценарии запускаются до и после отправки на сервер. Предварительные хуки могут выйти из ненулевого значения в любое время, чтобы отклонить push-запрос, а также вывести сообщение об ошибке обратно клиенту; Вы можете настроить политику push, которая будет настолько сложной, насколько вы пожелаете.

Чтобы определить, почему вы получаете это сообщение об ошибке, вам нужно выяснить, какая ловушка вас сбивает. Хуки хранятся в hooksпапке внутри папки git (на стороне удаленного сервера) - найдите pre-receiveхук или updateхук и проверьте, что является причиной вашей проблемы.

SLM
источник
Внутри моей папки hooks у меня есть несколько файлов с расширением .sample. У меня нет ловушки предварительного получения, однако есть ловушка обновления. Поскольку у них у всех есть расширение .sample, я не верю, что какие-либо из них используются, поэтому может ли быть так, что это ловушка на сервере, которая отвергает меня? Я посмотрел онлайн, и есть пара людей с моей проблемой, которые решили ее, выполнив различные действия, но ни одна из них не устранила это в моем случае.
Джошуа Строт
0

Проверка роли / группы и разрешения в GIT-репозитории. В моем случае, только красное разрешение и его разрешение разрешено после доступа на чтение / запись, предоставленного командой GIT-репозитория.

Radhakrishnan
источник
0

Если @Radhakrishnan уже предложил, возможно, вы столкнулись с проблемой разрешений.

В случае, если вы используете Redmine Git Hosting , проверьте, что роль менеджера прав доступа к проектам была назначена пользователю, который пытается переписать ссылки отслеживания его / ее git.

Обратите внимание, что я предполагаю, что вы знаете о влиянии git push -force на других пользователей, которые могут совместно использовать ту же удаленную ветку. Для получения дополнительной информации, проверьте эту статью

Хулио Нобре
источник