Невозможно отправить с помощью Eclipse/Egit репозиторий через SSH с набором git-receive-pack и git-upload-pack

Название в значительной степени говорит само за себя:

Я использую Eclipse (Juno SR2) с плагином EGit (2.2.0).

У меня есть удаленный репозиторий, настроенный с использованием SSH, и поскольку gitd не настроен на удаленном компьютере и поскольку инструменты git не находятся на пути, у меня есть следующие параметры в файле конфигурации:

[remote "origin"]
    url = ssh://[email protected]/home/colleague/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    uploadpack = ~colleague/bin/git-upload-pack
    receivepack = ~colleague/bin/git-receive-pack

Выполнение простого git push из командной строки отображает предупреждение безопасности сервера, затем запрашивает мой пароль ssh, а затем безошибочно нажимает.

Однако внутри Eclipse я получаю всплывающее окно с предупреждением сервера, затем мне предлагается ввести пароль, как и раньше, все выглядит хорошо, затем окончательное подтверждение со списком нажатых коммитов пусто с ошибкой вверху

ssh://[email protected]/home/colleague/repo.git: push not permitted

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

Кто-нибудь видел это раньше?


person Chris Cooper    schedule 26.06.2013    source источник
comment
Не могли бы вы попробовать использовать абсолютный путь, например /home/colleague/bin/git-upload-pack?   -  person robinst    schedule 26.06.2013
comment
Я пробовал это, но, боюсь, без удовольствия.   -  person Chris Cooper    schedule 26.06.2013


Ответы (1)


Для всех, кто следует за мной по той же кроличьей норе...

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

[remote "origin"]
    receivepack = /blah/bin/git-receive-pack
    uploadpack = /blah/bin/git-upload-pack

Я использую оболочку Bash удаленно, и в начале .bashrc перед ее выходом, когда оболочка не интерактивна, местоположение добавляется к пути следующим образом:

# If not running interactively, most of what follows is not worth doing
if [ -z "$PS1" ] ; then
  # Make sure my extra stuff is on the path even in non-intaractive shells (I'm looking at you SSH!)
  export PATH=/blah/bin:$PATH
  return
fi

Теперь я могу нажать либо из локальной командной строки, либо через Eclipse/EGit. Но, конечно, в качестве компромисса я уменьшил безопасность своих неинтерактивных оболочек.

person Chris Cooper    schedule 01.07.2013