git push kończy się niepowodzeniem ze zdalnym: error: hook odmówił aktualizacji refs / heads / master

9

Niedawno próbuję rozpocząć własny projekt na git repo społeczności i mam pewne komplikacje. Jestem nowy w Git, ale oto, co próbowałem zrobić, aby to przetestować.

Uruchamiam następujące polecenia i wszystkie działają poprawnie.

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

i wszystkie powyższe polecenia działają bezbłędnie. Jednak po uruchomieniu następnego polecenia pojawia się ogromny błąd.

git push -u origin master

i błąd jest.

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'

Nie jestem pewien, co robić dalej, ale jakakolwiek pomoc jest bardzo ceniona.

Poza tym korzystam z Arch, jeśli to ma znaczenie.

Edycja: Próbowałem ponownie zainstalować rake i nie działało. Moja aktualna wersja rake'a to 10.1.1, więc próbowałem ją usunąć i zastąpić wersją 10.1.0, ale to też nie naprawiło.

Jednak gdy instalowałem rake, dostałem błąd:

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

Czy to może przyczynić się do powstania problemu?

Joshua Strot
źródło

Odpowiedzi:

9

To, że pilot odmówił odebrania danych, jest tylko efektem ubocznym prawdziwego problemu - git uważa, że ​​zostało to odrzucone, ponieważ jeden z zaczepów na zdalnym końcu nie powiódł się ze statusem wyjścia> 0 (możesz zobaczyć, co to było w Ruby traceback). Wygląda na to, że jeden z haków próbuje go użyć rakei nie może go znaleźć. Prawdopodobnie nie jest to problem z konkretnym repozytorium. Ten komunikat również nie pochodzi z twojego komputera lokalnego - zwróć uwagę, że jest on poprzedzony „zdalnym”, brakuje pilotarake , więc prawdopodobnie tylko sysadmin po tej stronie może rozwiązać problem.

Sugeruję skontaktowanie się z kimkolwiek, kto zarządza twoim społecznym repozytorium git.

Chris Down
źródło
Właśnie o tym myślałem. Żaden haczyk w moim repozytorium git nie jest aktywny i do tej pory nic, co zrobiłem, nie wydaje się zmieniać błędu ani tworzyć nowych. Skontaktuję się z właścicielem repozytorium i sprawdzę, czy ma on jakieś informacje na temat problemu.
Joshua Strot,
Okazało się, że problem polegał na tym, że próbowałem przesłać metodę HTTP, która nie jest obsługiwana na ich GitLab. Zamiast tego musisz przerzucić SSH, co działa wspaniale. Muszę powiedzieć, że nie spodziewałem się tego
Joshua Strot,
0

Wierzę, że to twój problem.

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

Szukaj tego błędu Natknąłem się na to pytanie i odpowiedzi na SO, zatytułowane: error: hook odmówił aktualizacji refs / heads / external_pub podczas wypychania gałęzi .

Wygląda na to, że na serwerze jest hak git , który odrzuca push.

fragment

Haki po stronie serwera

Oprócz haków po stronie klienta, możesz użyć kilku ważnych haków po stronie serwera jako administrator systemu, aby wymusić prawie każdy rodzaj zasad dla twojego projektu. Te skrypty działają przed i po wypychaniu na serwer. Haki wstępne mogą w dowolnym momencie wyjść niezerowe, aby odrzucić push, a także wydrukować komunikat o błędzie z powrotem do klienta; możesz skonfigurować politykę wypychania, która jest tak złożona, jak chcesz.

Aby ustalić, dlaczego pojawia się ten komunikat o błędzie, musisz dowiedzieć się, który hak Cię potyka. Haki są przechowywane w hooksfolderze w folderze git (na zdalnym serwerze) - znajdź pre-receivehak lub updatehak i sprawdź, co powoduje problem.

slm
źródło
Wewnątrz mojego folderu hooks mam wiele plików z rozszerzeniem .sample. Nie mam haka przed odebraniem, ale jest hak aktualizacji. Ponieważ wszystkie mają rozszerzenie .sample, nie sądzę, aby któryś z nich był używany, więc czy to możliwe, że jest to haczyk na serwerze, który mnie odrzuca? Szukałem w Internecie i jest kilka osób z moim problemem, które naprawiły to, robiąc różne rzeczy, z których żadna nie naprawiła tego w moim przypadku.
Joshua Strot,
0

Sprawdź rolę / grupę i uprawnienia w repozytorium GIT Mój przypadek, tylko czerwone uprawnienie i jego rozwiązanie po dostępie do odczytu / zapisu zapewnionym przez zespół repozytorium GIT

Radhakrishnan
źródło
0

@Radhakrishnan już sugerował, że możesz napotkać problem z uprawnieniami.

W przypadku korzystania Redmine Git Hosting , sprawdzić swoje uprawnienia Projet Menedżer rola została przypisana do użytkownika, który próbuje przepisać odniesienia śledzenia jego / jej git jest.

Pamiętaj, że zakładam, że wiesz o wpływie siły wypychania git na innych użytkowników, którzy mogą dzielić ten sam zdalny oddział. Aby uzyskać więcej informacji, sprawdź ten artykuł

Julio Nobre
źródło