Как клонировать общедоступный репозиторий git с помощью LibGit2 в Swift?
Я использую библиотеку libgit2 для клонирования репозитория в 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
}
Если я использую открытый текст и предоставляю имя пользователя, пароль с URL-адресом, например
https://myUserName@bitbucket.org/name/repo.git
. Но если я попытаюсь получить то же репо с помощью ssh
git@bitbucket.org:name/repo.git
а с sshMemory, где я указал имя пользователя, публичный ключ и приватный ключ, он не работает.
let creds = Credentials.sshMemory(username: userName, publicKey: pubkeyData, privateKey: privateKeyData, passphrase: "mypassphrase")
не работает.
Кто-нибудь пробовал SSH с libgit2?