Как изменить версию git, используемую для получения git -pu sh через SSH - PullRequest
3 голосов
/ 08 января 2020

Моя цель - написать код на моем ноутбуке, а затем подключить pu sh к пульту S SH, где я смогу запускать сценарии с более интенсивными вычислениями.

[my_laptop]$ git remote -v
my_remote   ssh://username@server.com:/home/username/projects/my_project (fetch)
my_remote   ssh://username@server.com:/home/username/projects/my_project (push)
origin  git@github.com:username/my_project.git (fetch)
origin  git@github.com:username/my_project.git (push)

Пульт S SH имеет предустановленный git 1.7.1 (CentOS), но я бы хотел установить для параметра git config receive.denyCurrentBranch значение updateInstead, которое было введено в git 2.3.0.

I установил git 2.9.5 из источника на удаленном сервере и установил псевдоним git=/home/username/bin/git2, который я могу проверить, используя git 2.9.5.

[server]$ which git
alias git='git2'
    ~/bin/git2

[server]$ git --version
git version 2.9.5

Однако, когда я пытаюсь сделать пу sh со своего ноутбука на удаленный компьютер я получаю ошибку «неверное значение конфигурации»:

[my_laptop]$ git push my_remote my_branch
fatal: bad config value for 'receive.denycurrentbranch' in ./config
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Я полагаю, это потому, что мой git push принимается с git 1.7.1, а не с 2.9. 5.

[my_laptop]$ ssh -t username@server.com "git --version"
git version 1.7.1
Connection to server.com closed.

[my_laptop]$ ssh -t username@server.com "git2 --version"
git version 2.9.5
Connection to server.com closed.

Как установить версию по умолчанию git на сервере S SH для использования 2.9.5 вместо 1.7.1? У меня нет прав администратора на сервере.

1 Ответ

1 голос
/ 08 января 2020

Изменение PATH в .bash_profile будет работать, только если sshd (S SH демон) на вашем сервере имеет PermitUserEnvironment в sshd_config, как , упомянутое здесь .

Проверьте, можете ли вы указать путь к пакету получения, если параметр remote.<name>.receivepack

git -c remote.origin.receivepack=/home/username/git2/bin/git-receive-pack push my_remote my_branch
...