ошибка push gitolite -> remote: ENV GL_RC не установлен - PullRequest
10 голосов
/ 08 марта 2011

Я пытаюсь отправить контент с рабочей станции на сервер. Но это дает мне ошибку. Пожалуйста, посмотрите на следующие команды и ошибки:

Administrator@ganesh ~/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 git@ganesh:repositories/testing  
 ! [remote rejected] master -> master (hook declined)  
error: failed to push some refs to 'git@ganesh:repositories/testing'  

Кажется, мне нужно установить переменную окружения GL_RC. Это так?

Может кто-нибудь сказать мне, в чем проблема и как я могу ее решить? Я использую Gitolite на Windows Server 2003.

Ответы [ 4 ]

9 голосов
/ 08 марта 2011

Как показано в документе doc Устранение неполадок ssh , это, вероятно, вызвано неправильным путем при клонировании.

В документации (некоторые части ниже действительны только для Gitolite V2) упоминается:

Вторая ошибка

(т. Е. "Вы можете клонировать репозитории, но не можете откатить изменения назад (ошибка приводит к тому, что переменная среды GL_RC неустановлен, и перехват / обновление каким-то образом завершается неудачно)

происходит, если вы используете git@server:repositories/reponame.git (при условии, что значение по умолчанию $REPO_BASE - в Gitolite V3 , это всегда ~/repositories) - то есть вы использовали полный путь Unix .
Поскольку упомянутый выше «префикс» не требуется, оболочка находит репозиторий и клоны в порядке.
Но когда вы нажимаете, запускается ловушка обновления gitolite, и она не запускается, потому что некоторые ожидаемые переменные среды отсутствуют.

Сообщение, которое появляется при успешном запускепростой в установкеogram явно включает следующее предупреждение:

*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 git@ganesh:repositories/testing.git

вместо:

git@ganesh:testing.git
2 голосов
/ 01 мая 2013

Попробуйте:

ssh git@ganesh

Вы должны увидеть gitolite-shell вместо bash:

ssh git@localhost

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.

Если нет, это означает, что вы обходите gitolite-shell и вместо этого используете bash.Причина может заключаться в том, что, запустив gl-setup your_pub_key.pub, вы добавили свой ключ в конец файла /home/git/.ssh/authorized_keys.

Следовательно, этот ключ никогда не достигается, потому что в верхней части находятся другие ключи.Итак, вам просто нужно открыть /home/git/.ssh/authorired_keys и переместить недавно добавленный ключ gitolite в верхнюю часть файла.

После перемещения этой записи в верхнюю часть файла, вы должныспособный использовать: git clone git @ ganesh: testing.git внутри git clone git @ ganesh: repositories / testing.git Второй клонирует репо, но приводит к ошибке, потому что вы запускаете «git push» через bash вместо gitolite-оболочка

2 голосов
/ 14 мая 2011

Документ по устранению неполадок ssh по адресу http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html (как и в репозитории с исходным кодом gitolite) был полностью переработан. Я надеюсь, что он течет намного лучше и объясняет вещи проще, включая эту конкретную ошибку.

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

Ситары

2 голосов
/ 25 апреля 2011

Только что получил ту же ошибку.

Правильный ответ: вам нужно использовать команду git clone gitolite:repo_name для клонирования репозитория и git push gitolite:repo_name для внесения изменений вместо git clone git@yourservername:repo_name.

...