ios - 如何在 Swift 中使用 LibGit2 克隆公共 git 存储库?
问题描述
我正在使用 libgit2 库以 swift 语言克隆 iOS 中的存储库。我可以通过传递用户名和密码来克隆存储库
internal func credentialsCallback(
cred: UnsafeMutablePointer<UnsafeMutablePointer<git_cred>?>?,
url: UnsafePointer<CChar>?,
username: UnsafePointer<CChar>?,
_: UInt32,
payload: UnsafeMutableRawPointer? ) -> Int32 {
let result: Int32
// Find username_from_url
let name = username.map(String.init(cString:))
switch Credentials.fromPointer(payload!) ?? .default{
case .default:
result = git_cred_default_new(cred)
case .sshAgent:
result = git_cred_ssh_key_from_agent(cred, name!)
case .plaintext(let username, let password):
result = git_cred_userpass_plaintext_new(cred, username, password)
case .sshMemory(let username, let publicKey, let privateKey, let passphrase):
result = git_cred_ssh_key_memory_new(cred, username, publicKey, privateKey, passphrase)
}
return (result != GIT_OK.rawValue) ? -1 : 0
}
如果我使用纯文本并提供用户名、密码以及类似https://myUserName@bitbucket.org/name/repo.git
. 但是,如果我尝试使用 sshgit@bitbucket.org:name/repo.git
和 sshMemory 获取相同的存储库,其中我提供了用户名、公钥和私钥,那么它就无法正常工作。
let creds = Credentials.sshMemory(username: userName, publicKey: pubkeyData, privateKey: privateKeyData, passphrase: "mypassphrase")
不管用。
有人用 libgit2 尝试过 SSH 吗?
解决方案
推荐阅读
- c++ - Windows Task scheduling startup program, give this program to run add parameters how code implementation?
- php - 如何使用 Laravel 5.6 在 Laravel Eloquent 中实现嵌套 MySQL 查询
- javascript - Rename reconstructred object key to other name
- laravel - Injecting model and return value 'with' relationship in controller in laravel
- r - 闪亮仪表板中的多个条件
- java - Java Operators, + - what is happening in the below code and why it is written like that
- azure - 需要 Azure 身份验证的应用程序上的 Invoke-RestMethod
- pattern-matching - SpaCy:匹配文档的一部分
- list - how to delete item list using pop up menu - flutter
- python - 这段代码有什么问题,为什么这段代码的损失没有减少?