Подтвердить что ты не робот

Git, толчок ошибки гитолита

Я только что установил 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://[email protected]/home/admin/repositories/gitolite-admin.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to   'ssh://[email protected]/home/admin/repositories/gitolite-admin.git'

Я не знаю, что я должен делать.

Вы можете мне помочь?

спасибо

4b9b3361

Ответ 1

Перед запуском: gitbox - удаленный компьютер с установленным git и gitolite. Пользователь git - это пользователь, который gitolite работает как на gitbox.

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

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

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

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

ssh-keygen -t rsa -f john_git_rsa

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

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

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

Теперь ваш 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

Теперь выполнение команд типa > 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 и т.д.):

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

ssh://[email protected]:22/reponame.git

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

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

Ответ 2

Googling for "Пустое значение времени компиляции, заданное для использования lib при перехватах/обновлении", первый результат находится в Часто задаваемые вопросы Gitolite:

Вы обходите гитолит. Вы клонировали репо, используя полный путь (то есть, включая репозитории/префикс), либо непосредственно на сервер или через ssh, но с ключом, который дает вам доступ к оболочке.

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

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

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

Ответ 3

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