Возможно ли иметь зависимости для загрузки Cargo от частного удаленного git?

У меня есть учетная запись на ssh-дружественном лабораторном компьютере, где я храню много частных проектов, поэтому я могу получить к ним доступ с нескольких компьютеров (и это позволяет мне использовать мои несколько частных репозиториев Github только для вещей, над которыми будут работать несколько человек).

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

[dependencies.foo]
git = "https://github.com/bar/foo"

[dependencies.baz]
path = "/path/to/baz"

Но я не нашел способа заставить его работать с помощью ssh git (например, git = "[email protected]:bar/foo" или, в моем случае, labmachine:bar/foo). У меня настроен ssh без пароля/keygen, если это поможет.

Ничего страшного, если его нет. На данный момент я просто вручную клонирую репозиторий и использую path = ../foo, который работает до тех пор, пока я сохраняю свою структуру каталогов одинаковой и не забываю вручную pull все зависимости на всех моих машинах. Однако было бы намного проще, если бы я мог просто настроить Cargo для этого, особенно если мне просто нужно быстро продемонстрировать что-то на своем ноутбуке или чем-то еще.


person LinearZoetrope    schedule 29.07.2015    source источник
comment
Я бы не подумал, что у груза есть какой-то инструмент для аутентификации git, поскольку идея груза состоит в том, чтобы захватить общедоступные зависимости для универсального инструмента сборки.   -  person Syntactic Fructose    schedule 29.07.2015
comment
Я полностью ожидаю, что если git clone foo работает, то git = "foo" будет работать. Насколько мне известно, он должен использовать те же ключи. Что на самом деле происходит?   -  person Chris Morgan    schedule 29.07.2015
comment
@ChrisMorgan, если вы попытаетесь использовать синтаксис ssh (например, git@github, например), вы получите неверный URL-адрес [email protected]:my/crate: относительный URL-адрес без базы   -  person LinearZoetrope    schedule 30.07.2015
comment
Мне действительно нужно решение этого. У меня есть несколько частных репозиториев на Github, и мне нужно делиться ящиками между ними. git = "https://github.com/fred/bill" не работает, ни git = "git@...", ни git = "ssh://...". git clone ... работает нормально. Жалобы касаются проверки подлинности. Похоже, игнорируются git config пользовательские настройки.   -  person Steve Powell    schedule 23.03.2017
comment
Вы когда-нибудь догадывались об этом? сценарий labmachine:bar/foo?   -  person cloudsurfin    schedule 01.05.2020


Ответы (2)


В macOS Sierra мне пришлось создать файл .ssh/config следующим образом:

Host *
   UseKeychain yes
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa

с указанным файлом закрытого ключа (RSA), а затем введите команду:

ssh-add -K ~/.ssh/id_rsa

который (наконец-то!) разрешил запись вроде:

git = "ssh://[email protected]/skipjaq/loda.git"

работать идеально.

Я не знаю, как часто мне придется повторять команду ssh-add, но, похоже, это должно продолжаться как минимум до следующей перезагрузки.

Эта аномалия, по-видимому, является особенностью ssh-agent в macOS Sierra.

person Steve Powell    schedule 23.03.2017
comment
Я могу подтвердить, что мне пришлось повторно ввести команду ssh-add, прежде чем она снова заработала (после перезагрузки, вызванной обновлением). - person Steve Powell; 13.06.2017

Используйте полный путь SSH, а не сокращение Git:

git = "ssh://landmachine/bar/foo"
person Chris Morgan    schedule 30.07.2015
comment
Хм, не работает. Если я использую свой псевдоним, определенный в ~/.ssh/config, я не получаю такого известного хоста. Ввод полного URL дает error authenticating: failed connecting agent. Я проверил, что полный путь ssh работает с git clone, чтобы было ясно. - person LinearZoetrope; 31.07.2015
comment
Это хлопотно. Тогда я не уверен, что происходит. - person Chris Morgan; 31.07.2015