首页 > 解决方案 > 尝试通过 Swift 克隆 git 存储库遇到协议违规

问题描述

Darwin-via-Swift Neophyte 在这里。

这是以下内容的延续:Process() 简介

我正在尝试使用 Swift 作为自动化达尔文级流程的一种手段,例如克隆 git 存储库、压缩文件夹等。

我得到了一个模板来尝试进行克隆(通过上面的链接)。
我创建了一个测试链接;并在达尔文提示下进行了尝试。

所以我知道它有效。
但是我通过我的 Swift 脚本收到了协议错误。

这里有什么补救措施?
是否有我必须使用的特定协议?

import Foundation

extension Process {

    private static let gitExecURL = URL(fileURLWithPath: "/usr/bin/git")

    public func clone(repo: String, path: String) throws {
        executableURL = Process.gitExecURL
        arguments = ["clone", repo, path]
        try run()
    }

}


let source = "git clone https://AmourineTech@bitbucket.org/AmourineTech/testbit.git"
let target = "/Users/Ric/workarea"

print("Hello, World!")

try! Process().clone(repo: source, path: target)

print("Done")

控制台输出:

Hello, World!
Done
Cloning into '/Users/Ric/workarea'...
fatal: protocol 'git clone https' is not supported
Program ended with exit code: 0

标签: swiftgitmacosheadless

解决方案


它似乎source必须是一个 URL,而不是一个git clone命令:

let source = "https://AmourineTech@bitbucket.org/AmourineTech/testbit.git"

推荐阅读