Назад | Перейти на главную страницу

gitolite не может выполнить git

У меня проблемы с настройкой гитолита. Сервер - Mac OS X Server 10.5.8, а клиент - Mac OS X 10.6.6. Оба работают под управлением git 1.7.3.4, скомпилированного из исходников.

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

Я использовал "корневой метод" монтаж. Проблема в том, когда я запускаю последний шаг: cd; git clone git@server:gitolite-admin

Вот что происходит на стороне клиента:

tom@client$ ssh git@git.example.com info
hello tom, the gitolite version here is v1.5.8-22-g6bcb5c1
the gitolite config gives you the following access:
     R   W      gitolite-admin
    @R_ @W_     testing
tom@client$ git clone git@git.example.com:gitolite-admin
Cloning into gitolite-admin...
Can't exec "git": No such file or directory at /usr/local/bin/gl-auth-command line 176.
fatal: The remote end hung up unexpectedly

Из https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd

В результате отладка становится намного проще. Просто беги ssh git@server info. Если это даст вам версию гитолита и информацию о доступе, все в порядке. Если он запрашивает пароль, обратитесь за помощью в самый первый раздел этого документа.

Таким образом, я прихожу к выводу, что SSH-часть гитолита настроена правильно.

Сервер:

admin@server$ su - git
Password:
git@server$ which git
/usr/local/bin/git
git@server$ which gl-auth-command
/usr/local/bin/gl-auth-command
git@server$ tail -n 2 /usr/local/bin/gl-auth-command 
$repo = "'$REPO_BASE/$repo.git'";
exec("git", "shell", "-c", "$verb $repo") unless $verb eq 'git-init';

git доступен на сервере, как и пользователь git $PATH.

Я использовал «хвост», чтобы показать последние две строки, 175 и 176, поскольку, очевидно, последняя строка - это та, которая не работает.

Что, черт возьми, не так? Я бил этим головой об стену.

Похоже, это может быть та же проблема, что описана здесь:

настройка gitolite на Mac => git-upload-pack: команда не найдена

В интерактивных сеансах не обязательно должны быть установлены те же переменные среды, что и в неинтерактивных сеансах. Попробуйте добавить PATH к git (/ usr / local / bin) в файл инициализации оболочки для пользователя git, который читает как в интерактивных, так и в неинтерактивных сеансах. Если оболочка пользователя git - bash, попробуйте ~ git / .bashrc.

Вы можете установить $GIT_PATH переменная в gitolite.rc файл, если команда gl-auth-command не может найти место установки git. Видеть http://sitaramc.github.com/gitolite/doc/gitolite.rc.html для получения дополнительной информации.

Похоже, что / usr / local / bin / не является частью $ PATH, когда команда gl-auth-command запускается из ssh, поэтому ваша оболочка должна добавлять ее при обычном входе в систему, но не во время неинтерактивного использования без входа в систему.