使用分叉的 swift 包作为 Vapor 项目的依赖项
Using a forked swift package as a dependency for Vapor project
我已经为 Firebase 实时数据库连接分叉了一个服务器端 swift 包:ferno 我正在尝试将它用作我的 Package.swift
中的依赖项,就像这样:
.package(url: "git@github.com:3sidedcube/ferno.git", .branch("jwt3")),
但是当 运行 vapor xcode
我得到这样的错误:
Error: Could not generate Xcode project: Completed resolution in 8.33s
error: terminated(128): git -C /Users/simonmitchell/Coding/Device-Monitor/.build/checkouts/ferno.git--4002215034454709000 checkout -f 155fa23f2f2d985dbee20072e560b095f61d7b63 output:
我已经检查了 swift 软件包的文档,这应该都是符合标准的,但为什么它不起作用?这是 swift 包管理器的限制吗?还是蒸气?
我发现这只是我对 swift 包管理器了解不够。删除 .build
目录并重新尝试后似乎一切正常。
有时需要清除或重置包构建以使事情回到正轨。可以使用以下之一重置构建:
蒸气
vapor clean
vapor update
# Updating [Done]
# Changes to dependencies usually require Xcode to be regenerated.
# Would you like to regenerate your xcode project now?
y/n> y
# Generating Xcode Project [Done]
# Select the `Run` scheme to run.
# Open Xcode project?
y/n> y
# Opening Xcode project...
swift 包管理器
swift package reset # Reset the complete cache/build directory
swift package update
# Fetching https://github.com/vapor/vapor.git
# Fetching https://github.com/vapor/fluent-sqlite.git
# Fetching git@github.com-MY-SSH-HOST:3sidedcube/ferno.git
# ...
swift package generate-xcodeproj
# generated: ./Hello.xcodeproj
open Hello.xcodeproj/
手动构建删除
rm -Rf .build
rm -Rf Hello.xcodeproj
此外,根据我的经验,Swift 包管理器 .package(url: "git@github.com…)
协议需要 SSH 密钥对设置以用于远程服务 public 和私有repos. 但是,.package(url: "https://github.com…)
协议不需要此设置,因为 https
提供了安全传输层。
ssh 密钥对
如果还没有完成,create and setup a public/private ssh key pair for GitHub. ⇗
~/.ssh/config
### GITHUB-MY-SSH-HOST
### ADD REPOSITORY: git@github.com-MY-SSH-HOST:_USER_NAME_/_REPOSITORY_NAME_.git
Host github.com-MY-SSH-HOST
HostName github.com
User git
IdentityFile ~/.ssh/github_privatelocal_rsa
UseKeychain yes
AddKeysToAgent yes
PreferredAuthentications publickey
注意:较新的 macOS 系统需要 UseKeychain
& AddKeysToAgent
才能与 Keychain.app
一起使用
Package.swift
在包git
命令中明确声明定义的MY-SSH-HOST
。
.package(url: "git@github.com:3sidedcube-MY-SSH-HOST/ferno.git", .branch("jwt3"))
],
targets: [
.target(name: "App", dependencies: ["FluentSQLite", "Vapor", "Ferno"]),
// …
我已经为 Firebase 实时数据库连接分叉了一个服务器端 swift 包:ferno 我正在尝试将它用作我的 Package.swift
中的依赖项,就像这样:
.package(url: "git@github.com:3sidedcube/ferno.git", .branch("jwt3")),
但是当 运行 vapor xcode
我得到这样的错误:
Error: Could not generate Xcode project: Completed resolution in 8.33s
error: terminated(128): git -C /Users/simonmitchell/Coding/Device-Monitor/.build/checkouts/ferno.git--4002215034454709000 checkout -f 155fa23f2f2d985dbee20072e560b095f61d7b63 output:
我已经检查了 swift 软件包的文档,这应该都是符合标准的,但为什么它不起作用?这是 swift 包管理器的限制吗?还是蒸气?
我发现这只是我对 swift 包管理器了解不够。删除 .build
目录并重新尝试后似乎一切正常。
有时需要清除或重置包构建以使事情回到正轨。可以使用以下之一重置构建:
蒸气
vapor clean
vapor update
# Updating [Done]
# Changes to dependencies usually require Xcode to be regenerated.
# Would you like to regenerate your xcode project now?
y/n> y
# Generating Xcode Project [Done]
# Select the `Run` scheme to run.
# Open Xcode project?
y/n> y
# Opening Xcode project...
swift 包管理器
swift package reset # Reset the complete cache/build directory
swift package update
# Fetching https://github.com/vapor/vapor.git
# Fetching https://github.com/vapor/fluent-sqlite.git
# Fetching git@github.com-MY-SSH-HOST:3sidedcube/ferno.git
# ...
swift package generate-xcodeproj
# generated: ./Hello.xcodeproj
open Hello.xcodeproj/
手动构建删除
rm -Rf .build
rm -Rf Hello.xcodeproj
此外,根据我的经验,Swift 包管理器 .package(url: "git@github.com…)
协议需要 SSH 密钥对设置以用于远程服务 public 和私有repos. 但是,.package(url: "https://github.com…)
协议不需要此设置,因为 https
提供了安全传输层。
ssh 密钥对
如果还没有完成,create and setup a public/private ssh key pair for GitHub. ⇗
~/.ssh/config
### GITHUB-MY-SSH-HOST
### ADD REPOSITORY: git@github.com-MY-SSH-HOST:_USER_NAME_/_REPOSITORY_NAME_.git
Host github.com-MY-SSH-HOST
HostName github.com
User git
IdentityFile ~/.ssh/github_privatelocal_rsa
UseKeychain yes
AddKeysToAgent yes
PreferredAuthentications publickey
注意:较新的 macOS 系统需要 UseKeychain
& AddKeysToAgent
才能与 Keychain.app
Package.swift
在包git
命令中明确声明定义的MY-SSH-HOST
。
.package(url: "git@github.com:3sidedcube-MY-SSH-HOST/ferno.git", .branch("jwt3"))
],
targets: [
.target(name: "App", dependencies: ["FluentSQLite", "Vapor", "Ferno"]),
// …