pip install -e svn + ssh не принимает пользователя - PullRequest
0 голосов
/ 04 мая 2018

Если я сделаю:

svn co svn+ssh://svn@10.210.1.24/cidb/V1/trunk/config cidb_config_pipenv

Это работает, но если я сделаю:

pip install -e svn+ssh://svn@10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv

Obtaining cidb_config_pipenv from svn+ssh://svn@10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv

Удаляет 'svn @':

Checking out svn+ssh://10.210.1.24/cidb/V1/trunk/config to /root/.virtualenvs/root-PB1MQnVC/src/cidb-config-pipenv

Таким образом, он пытается войти на сервер svn с другим пользователем, кроме 'svn', и это не удается.

В документации по pip я вижу, что можно использовать svn + ssh, но нет примера: Правильный ли у меня синтаксис для указания пользователя, который будет использоваться для входа на сервер svn?

РЕДАКТИРОВАТЬ: Единственное решение, которое я нашел, это принудительно ввести имя пользователя в определении туннеля SSH в ~ / .subversion / config:

[tunnels]
ssh = ssh -l svn

Это действительно безобразно, но работает.

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

При переводе в подробный режим видно, что pip вызывает svn checkout с именем --username. Но это SVN, который не работает.

svn checkout --username myuser svn+ssh://host/path

не работает (по крайней мере, в Ubuntu и Centos): имя пользователя не учитывается. SVN принимает только то, что:

svn checkout svn+ssh://myuser@host/path

Найденный мной хак: используйте «% 40» вместо «@», чтобы pip не обнаруживал имя пользователя в URL и не вызывал svn с параметром --username. Так что теперь я могу сделать:

pip -e svn+ssh://myuser%40host/path#egg=myproject

Это ужасно, может быть, мне придется открыть вопрос для pip и / или svn ...

0 голосов
/ 06 мая 2018

svn+ssh использует другую (ssh) аутентификацию , поэтому обычная --username аутентификация не работает. Чтобы pip не передавал --username в svn, вы должны избегать svn@ в URL. И чтобы передать правильный ключ ssh, вы должны переопределить команду ssh. Примерно так (укажите путь к реальному ключу):

SVN_SSH="ssh -i $HOME/.ssh/id_dsa.svn"

В вашем случае это может быть

SVN_SSH="ssh -l svn"
export SVN_SSH

Убедитесь, что это работает:

svn co svn+ssh://10.210.1.24/cidb/V1/trunk/config cidb_config_pipenv

Run pip:

pip install -e svn+ssh://10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...