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

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

Я пытаюсь настроить гитолит с помощью "непосредственно на сервере" в документации

Я прошел через всю настройку, загрузил открытый ключ ssh и т. Д., Так что теперь я могу ssh git @ myserver, не запрашивая у меня какие-либо пароли, все хорошо.

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

on the client, run cd; git clone git@server:gitolite-admin

запуск, который вызывает эту ошибку:

Initialized empty Git repository in /Users/myLocalUser/gitolite-admin/.git/
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

который говорит мне, что он не может найти git-upload-pack, поэтому я подумал, что мне просто нужно добавить его путь к пользователю "git" ".profile"

Я только что дважды проверил, и путь есть! Если я:

ssh git@myServer

затем позвоните:

which git-upload-pack

Я получаю ожидаемый путь:

/usr/local/bin/git-upload-pack

Что мне здесь не хватает ?!

Кажется, я не могу клонировать gitolite-admin, потому что он продолжает жаловаться на то, что не может найти git-upload-pack !!

Наконец, я решил эту проблему, добавив PATH в .bashrc вместо .profile

Пользователь git настроен на использование оболочки / usr / bin / bash

Я не понял, что когда я нахожусь на своем сервере с помощью ssh с пользователем git:

ssh git@myServer

переменная PATH считывается из .profile в домашнем каталоге git.

echo $PATH

отображал все правильные пути, включенные в .profile

но..

с моей рабочей станции, когда я пытался

ssh git@myServer \echo $PATH

вывод был совершенно другим, и все пути отсутствовали.

После добавления файла .bashrc в домашний каталог git и определения всех необходимых мне PATH внутри .bashrc и добавления / usr / local / bin /, где находится git-upload-pack, он работал, как ожидалось.

Всегда следите за тем, чтобы пути были проложены там, где они должен были, выполнив эту команду:

ssh git@myServer \echo $PATH

Когда вы входите в систему с помощью ssh, запускается «оболочка входа» и выполняются некоторые из ваших сценариев входа в систему. Если вы удаленно выполняете команду с помощью ssh, некоторые Другой скрипты входа в систему выполняются. Вы можете прочитать об этом Вот.

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

Вы можете изменить сценарии входа в систему, как вы предложили. Возможно, более простая альтернатива - указать путь к git-upload-pack в командной строке как это:

git clone --upload-pack /usr/local/bin/git-upload-pack git@server:gitolite-admin

Если у вас есть удаленный репозиторий, для которого вы должны часто использовать --upload-pack, вы можете облегчить жизнь, настроив git после клона, чтобы всегда использовать этот путь для этого репозитория

git configure remote.<name-of-repo>.uploadpack /usr/local/bin/git-upload-pack

Если вы не назвали свой удаленный репозиторий, <name-of-repo> обычно origin