GIT: «git-upload-pack: команда не найдена» во время отправки на удаленный сервер - PullRequest
11 голосов
/ 18 мая 2011

Итак, я использую GIT и пытаюсь отправить код на мой удаленный сервер.

  • на общем хостинге Unix, и мне не разрешено иметь собственные переменные среды (заблокированные для учетных записей SSH) и не иметь доступа sudo.
  • удалось успешно установить git в моем / home /
  • попытка отправить код на сервер возвращает: bash: git-upload-pack: команда не найдена
  • Переменная $ PATH установлена ​​- потому что git установлен в my / home /
  • , чтобы все заработало, мне пришлось использовать следующую команду клона:

    git clone -u / home / bin / git-upload-pack user@server.com: mygitfolder

  • те же версии git на локальном компьютере / удаленном сервере (1.7.0.4)

так что из того, что я могу собрать, мне нужно в основном:

  • найти способ переносить переменную среды каждый раз, когда я отправляю на сервер или
  • указать путь моего git-receive-pack при отправке на сервер

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

(я бы не хотел создавать псевдоним на моей локальной машине)

1 Ответ

15 голосов
/ 18 мая 2011

Если вы не можете отрегулировать эффективный PATH на удаленной стороне 1 , то вам придется указать расположение программ с вашей локальной стороны.

Как вы обнаружили, git clone можно присвоить -u /path/to/git-upload-pack (или --upload-pack /path/to/git-upload-pack).

git fetch и git pull принять --upload-pack /path/to/git-upload-pack(но не -u, поскольку это означает что-то еще для этих программ).Они также проверяют переменную конфигурации remote.<name>.uploadpack.

git push принимает --receive-pack /path/to/git-receive-pack и проверяет переменную конфигурации remote.<name>.receivepack.

Как только вы клонировали свой репозиторийВы можете использовать переменные конфигурации для записи путей:

git clone -u /home/bin/git-upload-pack user@server.com:mygitfolder
cd mygitfolder
git config remote.origin.uploadpack /home/bin/git-upload-pack
git config remote.origin.receivepack /home/bin/git-receive-pack

Затем вы можете выдвигать, извлекать или извлекать, не указывая путь.


1 Вы сказали, что «переменные среды [заблокированы] для учетных записей SSH».Если вы имеете в виду, что у sshd отключена настройка PermitUserEnvironment (что означает, что вы не можете использовать environment="PATH=/home/bin:/usr/bin:/bin" в своем файле .ssh/authorized_keys), то вы все равно сможете изменить PATH по умолчанию черезфайл инициализации оболочки (например, .bashrc).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...