git, gitolite ошибка push

Я только что установил gitolite, но когда я нажимаю на репозиторий gitolite-admin, я получаю ошибку:

git push
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 605 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains:  /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at hooks/update line 7.
remote: BEGIN failed--compilation aborted at hooks/update line 7.
remote: error: hook declined to update refs/heads/master
To ssh://admin@192.168.0.26/home/admin/repositories/gitolite-admin.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to   'ssh://admin@192.168.0.26/home/admin/repositories/gitolite-admin.git'

3 ответов


прежде чем начать:gitbox удаленная машина с установленным git и gitolite. The git пользователь gitolite'у работает как на gitbox.

вы можете преодолеть эту ошибку, (1) генерируя новую пару ключей, (2) регистрируя открытый ключ на gitbox и (3) гарантируя, что при подключении к gitbox вы всегда подключаетесь как git пользователь с помощью нового закрытого ключа.

для ниндзя, этого, наверное, достаточно. Для остальных, вот более подробно:

Шаг 1) Создайте новую пару клавиш

большинство IDEs имеют возможность создавать новую публичную / частную пару клавиш. Кроме того, если у вас есть доступ к машине Linux, вы можете создать свой собственный, используя:

ssh-keygen -t rsa -f john_git_rsa

выход будет набором private (john_git_rsa) и общественных (john_git_rsa.паб) ключи (ака keypair). Вам нужно скопировать открытый ключ к gitbox на следующем шаге.

Шаг 2) зарегистрируйте новый открытый ключ на gitbox

вы можете узнать, как использовать git для администрирования gitolite-admin с быстрым поиском Google. Короче говоря, шаги: (1) клонировать репозиторий gitolite-admin; (2) Добавить новый открытый ключ в каталог gitolite-admin/keydir/; и (3) вернуть изменения в репозиторий gitolite-admin. Нажатие запускает gitbox для регистрации любых новых ключей в папке keydir / с помощью список авторизованных пользователей git-пользователя gitbox.

ваш gitbox теперь готов принять новые соединения от тех, кто аутентифицируется как git пользователь, используя john_git_rsa закрытый ключ.

Шаг 3) убедитесь, что ваши соединения с gitbox используют пользователя git и новый закрытый ключ

Если вы подключаетесь к gitbox с помощью терминала, отредактируйте / создайте~/.ssh / config файл для включения псевдонима, который предварительно настраивает подключение к gitbox. Псевдоним выглядит так:

Host gitbox
   User git
   Hostname yourgitbox.com
   Port 22
   IdentityFile ~/.ssh/john_git_rsa

Теперь, выполняя команды, такие как >git clone gitbox:reponame.git, или >git push gitbox: reponame.git гарантирует, что вы используете пользователя git и соответствующий закрытый ключ. Без этого псевдонима вам придется сделать что - то вроде >git clone ssh://git@yourgitbox.com:22/reponame.git и найдите переключатель ssh для указания закрытого ключа для использования-не очень. (Примечание: Если вы подключаетесь без использования этого псевдонима, ваш ключ ssh по умолчанию будет будет использоваться, и вы получите ошибки разрешения.)

или если вы используете IDE (NetBeans, Eclipse и т. д.):

вам нужно найти настройки SSH вашей IDE и установить их для использования нового закрытого ключа, который вы создали (john_git_rsa) вместо ключей по умолчанию, созданных во время его установки. Вам также необходимо убедиться, что URI вашего push-репозитория установлен на что-то вроде:

ssh://git@yourgitbox.com:22/reponame.git

что имя пользователя установлено в git, и поле пароля пусто. Это гарантирует, что при подключении к gitbox ваша IDE предоставит закрытый ключ, который вы только что настроили, и пользователь git.

Теперь ваши толчки должны работать.


Googling для "пустого значения времени компиляции, заданного для использования lib при крючках / обновлении", первый результат в gitolite FAQ:

вы обходите gitolite'у. Вы клонировали РЕПО, используя полный путь (т. е., включая репозитории/ префикс), либо непосредственно на сервер, или через SSH, но с ключом, который дает вам доступ к оболочке.

решение: то же, что и для предыдущей пули.

предыдущая пуля:

используйте другую пару клавиш для gitolite. Есть немного длиннее обсуждение на странице настройка. Также смотрите почему обход вызывает проблему и оба документа в ssh для фона.


Это очень хороший комментарий от #roberthernandez, но я хочу добавить некоторые акценты к этому. Мой большой броблем с установкой gitolite (и push'ING конечно) были с проверкой, что каталог '~/bin' находится в переменной окружения PATH. Нам нужно использовать export PATH=$PATH:~/bin для этого параметра. Без этого варианта я думаю, что gitolite не может выполнять свои процессы и имеет проблемы с выталкиванием от вас. Кроме того, после этого вы можете использовать bin/gitolite setup ....