Как развернуть новый код через git, если git установлен только на моего пользователя? - PullRequest
1 голос
/ 09 февраля 2012

Сценарий

  • У меня есть доступ к этому старому серверу Linux, который больше не получает никаких обновлений.Только сломать и починить.На сервере не установлено ни одного git, поэтому я установил его локально для моего пользователя в ~ / opt / bin.Я добавил каталог к ​​своему пути и для разработки на сервере я могу делать практически все, что мне нужно делать с git.
  • Я решил, что было бы неплохо вместо этого заняться разработкой на своей рабочей станции и перейти к готовому производственному коду.
  • Я установил пустой репозиторий на своем сервере, создал пост-получить файл с проверкой -f на мой GIT_WORK_TREE и похоже, что все настроено соответствующим образом.

Проблема

Когда я пытаюсь нажать мою основную ветку, я получаю следующую ошибку:

 sh: git-receive-pack: command not found
 fatal: The remote end hung up unexpectedly

Я знаю, почему это происходит.$ PATH на моем SSH видит только /usr/bin:/bin:/usr/sbin:/sbin

Мой пользователь настроен с оболочкой / bin / sh, поэтому использование .profile / .bashrc / .bashprofile не вариант.

Я также не могу использовать .ssh / environment, потому что для моего PermitUserEnvironment установлено значение no.

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

Есть идеи, как заставить SSH видеть git и заставить это работать?

Спасибо

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Я нашел это!

http://www.wiredrevolution.com/git/fix-git-upload-pack-and-git-receive-pack-errors-on-shared-hosting

Второе решение включает добавление пути к вашему git-upload-path и git-recieve-path в вашем локальном .git/ config файл в [удаленном «источнике»].Это самый простой способ, так как вам нужно сделать это изменение только один раз.

[remote "origin"]
url = <repo address>
fetch = +refs/heads/*:refs/remotes/origin/*
uploadpack = <path to git-upload-pack>
receivepack = <path to git-receive-pack>
0 голосов
/ 09 февраля 2012

В этом проблема с использованием демона ssh по умолчанию: он заставляет PATH иметь неизменное значение, и если ваш инструмент (здесь «git») не установлен в пути, управляемом root (например, /usr/bin), нет никакого способа добавить его (любой запрос, который вы могли бы сделать, как символическая ссылка из /usr/bin на ваш исполняемый файл git, будет рассматриваться как угроза безопасности).

Единственное решение, с которым я столкнулся, былоскомпилировать свой собственный ssh ​​(работающий с собственной учетной записью), чтобы приспособить локальную установку инструмента.
Это то, что я реализовал в проекте GitHub compileEverything (который компилирует, среди прочего, демон ssh).

...