使用Process()

时间:2017-01-12 10:17:41

标签: swift git process swift3 arguments

要导出git修订版,我使用命令:

    git archive master | tar -x -C /Users/me/Desktop/export/

在终端上工作正常。

将此与Process()

一起使用
    let task = Process()
    task.currentDirectoryPath = "/Users/me/Documents/Project/HelpMe/"
    task.launchPath = "/usr/bin/git"
    task.arguments = ["archive", "master", "|", "tar", "-x", "-C", "/Users/me/Desktop/export/"]

    let pipe = Pipe()
    task.standardOutput = pipe
    task.standardError = pipe
    task.launch()
    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output = String(data: data, encoding: .utf8)
    task.waitUntilExit()

返回错误

  

错误:未知开关`x \' \ nusage:git archive [] [...] \ n或:git archive --list \ n或:git archive --remote [--exec] [ ] [...] \ n或:git archive --remote [--exec] --list \ n \ n - 格式化存档格式\ n --prefix将前缀添加到存档\ n -o中的每个路径名, --output将存档写入此文件\ n --worktree-attributes \ n读取工作目录中的.gitattributes \ n -v, - verbose报告stderr上的存档文件\ n -0仅存储\ n -1压缩更快\ n -9压缩更好\ n \ n -l, - list list支持的归档格式\ n \ n - 远程从远程存储库检索存档\ n --exec path to remote git-upload-archive命令

使用一个参数

    task.arguments = ["archive master | tar -x -C /Users/me/Desktop/export/"]

返回错误

  

git:\'归档大师| tar -x -C / Users / me / Desktop / export / \'不是git命令。请参阅\' git --help \'。

问题是|字符。 Process()使用单引号启动所有参数

git 'archive' 'master' '|' 'tar' '-x' '-C' '/Users/me/Desktop/export/'

如果我在终端中使用此功能并删除|周围的单引号,一切正常。

提前多多感谢

1 个答案:

答案 0 :(得分:0)

  1. 创建Cocoa类= SUM( B2:B7 ) = COUNT( A1:A7 ) - 1
  2. 创建一个Objective-C桥接标题并包含ExportGit
  3. 创建方法
  4. #import "ExportGit.h"

    1. 从Swift代码调用Objective-C
    2. - (void)exportGit { system("cd /Users/me/Documents/Projekte/HelpMe && git archive master | tar -x -C /Users/me/Desktop/export/"); }

      简历:它应该适用于Swift let exportGit = ExportGit() exportGit.exportgit(); Process() / standardOutput,但几天后我尝试使用standardInput,这花了我3分钟让它工作