Ошибка при импорте нескольких частных репозиториев с паром - PullRequest
2 голосов
/ 03 июля 2019

У меня проблемы с импортом нескольких частных репозиториев, кажется, я могу сделать это с 1. Поэтому мне интересно, может кто-нибудь сказать мне, что я делаю неправильно.Моя структура проекта выглядит следующим образом: Внутри корня проекта, в котором находится Package.swift:

--.ssh
    --config
    --model
    --model.pub
    --service
    --service.key

Содержимое package.swift:

import PackageDescription

let package = Package(
    name: "Server",
    products: [
        .library(name: "Seerver", targets: ["App"]),
    ],
    dependencies: [
        // ? A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "3.0.0"),

        // ? Swift ORM (queries, models, relations, etc) built on SQLite 3.
        .package(url: "https://github.com/vapor/fluent-sqlite.git", from: "3.0.0"),

        .package(url: "git@github.com:SwiftEverywhere/Model.git", .branch("master")),

        .package(url: "git@service.github.com:SwiftEverywhere/Service.git", .branch("master"))
    ],
    targets: [
        .target(name: "App", dependencies: ["FluentSQLite", "Vapor", "Model", "Service"]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: ["App"])
    ]
)

Содержимое конфигурации:

Host github.com
    HostName github.com
    User git
    IdentityFile ./.ssh/model
Host service.github.com
    HostName github.com
    User git
    IdentityFile ./.ssh/service

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

Ошибка, которую я получаю при запуске 'обновление' пар ":« Не удалось прочитать из удаленного хранилища. Убедитесь, что у вас есть правильныеправа доступа и хранилище существует "

Если я удаляю служебную зависимость, она работает, поэтому я должен был ошибиться.Заранее спасибо!

tldr;По сути, мне нужно знать, как настроить файл конфигурации и / или package.swift для использования правильного ключа развертывания.

1 Ответ

2 голосов
/ 05 июля 2019

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

Согласно этой сущности и этим комментариям вы можете обойтикак это:

В вашем Package.swift:

.package(url: "git@github.com-model:SwiftEverywhere/Model.git", .branch("master")),
.package(url: "git@github.com-service:SwiftEverywhere/Service.git", .branch("master"))

В вашем SSH-конфиге (вероятно, ~/.ssh/config):

Host github.com-model
    HostName github.com
    User git
    IdentityFile ~/.ssh/model

Host github.com-service
    HostName github.com
    User git
    IdentityFile ~/.ssh/service

Другой обходной путьзаключается в создании пользователя развертывания с ключом развертывания в качестве ключа SSH пользователя.Затем добавьте этого пользователя развертывания в качестве соавтора в свои частные репозитории.

...