Gitolite push error → remote: ENV GL_RC не установлен
Я пытаюсь вывести контент с рабочей станции на сервер. Но это дает мне ошибку. Для команды и ошибки выполните следующие действия:
[email protected] ~/testing
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 241 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To [email protected]:repositories/testing
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to '[email protected]:repositories/testing'
Кажется, мне нужно установить переменную окружения GL_RC
. Это так?
Может ли кто-нибудь здесь рассказать мне, что может быть проблемой и как я могу ее решить? Я использую gitolite на Windows Server 2003.
Ответы
Ответ 1
Как показано в документе ssh troubleshooting, это, вероятно, вызвано неправильным путем во время клонирования.
Документация (некоторые части ниже были действительны только для Gitolite V2):
Вторая ошибка
(т.е. вы можете клонировать репозитории, но не можете отбрасывать изменения назад (ошибка возникает из-за того, что переменная среды GL_RC
не установлена, а перехват/обновление в некотором роде не работает)
происходит, если вы используете [email protected]:repositories/reponame.git
(при условии, что значение по умолчанию $REPO_BASE
- в Gitolite V3, оно всегда ~/repositories
) - то есть вы использовали полный путь unix.
Так как "префикс", упомянутый выше, не требуется, оболочка находит репо и клоны в порядке.
Но когда вы нажимаете, gitolite update hook запускается и не запускается, потому что некоторые переменные среды, которых он ожидает, отсутствуют.
Сообщение, которое появляется при успешном запуске программы "простая установка", содержит следующее предупреждение:
*Your* URL for cloning any repo on this server will be
gitolite:reponame.git
*Other* users you set up will have to use
<user>@<server>:reponame.git
However, if your server uses a non-standard ssh port, they should use
ssh://<user>@<server>:<port>/reponame.git
Итак, в вашем случае вы должны клонировать свое репо с помощью:
git clone [email protected]:repositories/testing.git
вместо:
[email protected]:testing.git
Ответ 2
Просто полученная ошибка.
Правильный ответ: вам нужно использовать команду git clone gitolite:repo_name
, чтобы клонировать репозиторий и git push gitolite:repo_name
, чтобы нажимать изменения вместо git clone [email protected]:repo_name
.
Ответ 3
Документ по поиску и устранению неисправностей ssh на http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html (а также в исходном репозитории gitolite) теперь полностью переработан. Я надеюсь, что он течет намного лучше и объясняет, что это проще, включая эту конкретную ошибку.
Я также добавлю, что вы должны идеально читать этот документ в полном объеме, по крайней мере в первый раз.
Ситары
Ответ 4
Попробуйте:
ssh [email protected]
Вы должны увидеть гитолит-оболочку вместо bash:
ssh [email protected]
PTY allocation request failed on channel 0 hello
id_rsa, the gitolite version here is 2.0.3-2 (Debian) the gitolite
config gives you the following access:
R W gitolite-admin
@R_ @W_ testing
Connection to localhost closed.
Если это не означает, что вы обходите гитолит-оболочку и вместо этого используйте bash.
Причина может заключаться в том, что, запустив gl-setup your_pub_key.pub, вы добавили свой ключ в конец файла /home/ git/.ssh/authorized_keys.
Поэтому этот ключ никогда не достигается, потому что в верхней части находятся другие клавиши. Итак, вам просто нужно открыть /home/ git/.ssh/authorired_keys и перенести недавно добавленный гитолит-ключ в верхнюю часть файла.
После перемещения этой записи в верхнюю часть файла вы сможете использовать:
git клон git @ganesh: testing.git
insead of
git клон git @ganesh: репозитории /test.git
Второй клонирует репо, но приводит к ошибке, потому что вы запускаете "git push" через bash вместо gitolite-shell