从 Swift macOS 应用程序中调用 git 命令

2023-12-29

我正在尝试从我的应用程序中调用终端命令,特别是 git 命令。 在最简单的情况下,我们只是说我想打电话git status对于给定的目录。

我的应用程序的目的是对 git 进行包装,以提供 git 工具的使用,而无需用户与命令行进行任何直接交互(想想 Sourcetree)。

当尝试拨打电话时git status使用普通方法在 Swift 中运行命令

func shell(launchPath: String, arguments: [String]) -> String {
    let task = Process()
    task.launchPath = launchPath
    task.arguments = arguments

    let pipe = Pipe()
    task.standardOutput = pipe
    task.launch()

    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output: String = String(data: data, encoding: String.Encoding.utf8)!

    return output
}

print(shell(launchPath: "/usr/bin/git", arguments: ["status"]))

我(可以理解)收到错误xcrun: error: cannot be used within an App Sandbox.

我可以通过禁用安全设置和应用程序沙箱来解决这个问题.entitlements文件,但这显然不是一个更好的做法。

有没有办法允许我的应用程序被授予使用/usr/bin/git在某些目录中?

非常感谢。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Swift macOS 应用程序中调用 git 命令 的相关文章

  • git 日志历史记录图,每次提交一行,彩色,带有日期

    我需要的格式如下 git log decorate graph oneline date order 但我也需要它 包含日期 短 具有相同的颜色 I tried git log decorate graph oneline date ord
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 检测 AVAudioPlayer 中的播放结束

    我有几个短的 mp3 声音 我将它们存储在数组中 并希望连续播放它们 有什么方法可以检测 AVAudioPlayer 何时停止播放 以便我可以调用完成处理程序并播放下一个声音 我知道有一个委托 但我正在使用 Playground 和 SKS
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • 使用 MacPorts 在 Mac OS X 10.5 上安装 PostgreSQL 时出错

    我已经使用 MacPorts 在几台不同的计算机上安装了 PostgreSQL 没有问题 但是当涉及到我自己的笔记本电脑时 我无法构建它 当我执行此命令时 sudo port install postgresql83 我收到此错误 chec
  • 在真实设备上展示测试广告

    这是我的代码 let request GADRequest request testDevices kGADSimulatorID XXXX2F32d69CCA859FFB559D0FEA3CF6483D08A6 adView load r
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • Git 提交失败:“请使用 -m 或 -F 选项提供消息。”

    当我键入 git commit 命令来提交文件时 我收到以下错误消息 Microsoft Visual Studio 微软 找不到命令 错误 核心编辑器 Microsoft Visual Studio 存在问题 请使用 m 或 F 选项提供
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • 我可以/如何用 RC3 替换我的 KVO 东西?

    我正在尝试将一个使用 Facebook 的 KVOController 的 objc 应用程序移植到 Swift 我被鼓励去看看RC3 https github com ReactiveCocoa ReactiveCocoa作为一种替代且更
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • 如何让 Aptana Studio 记住 git ssh 密码

    我找不到任何有关如何获得 Aptana Studio 的内置 git 支持来记住执行推 拉操作的 ssh 密码的指南 信息 有人有什么想法吗 Aptana Studio 实际上是内置的 GIT 程序 它将在 Windows 上的 C Use
  • iPad - 无法在框架内滚动

    我无法滚动 iPad Safari 中框架内调用的 pdf 我已经尝试过两件事 2 指滚动 使用对象 嵌入代替框架 但这是行不通的 事实上我已经尝试了很多东西 溢出 高度等等 请帮我 先感谢您 根据这篇文章http support appl
  • git reflog 和 log 有什么区别?

    手册页说 log 显示提交日志 reflog 管理 reflog 信息 reflog 信息到底是什么 它有哪些日志没有的信息 日志看起来更详细 git log显示当前的 HEAD 及其祖先 也就是说 它打印提交 HEAD 指向的提交 然后打
  • Codesign:什么是未密封内容?

    我刚刚升级到 XCode 6 并尝试构建我的开发者 ID 签名的 Mac 应用程序 但是 我现在收到以下协同设计错误 unsealed contents present in the root directory of an embedde
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • Git:从 master 以外的分支克隆

    我正在尝试从 Github 的存储库中提取数据 但我不想克隆主分支 我想克隆其他一些分支 当我尝试时git clone

随机推荐

  • 全局...未定义 python

    我需要在 python 中逐文本读取一些单词 并且收到此错误 NameError 未定义全局名称 wordList i 0 with fitxer as f for line in f for word in line split word
  • 如何从外部访问本地 Django Web 服务器

    我按照说明进行操作here http magazine redhat com 2008 06 05 installingconfiguringcaching django on your linux server 使用内置网络服务器运行 D
  • 使用 PHP 检查 URL 是否包含特定字符串

    我想知道 URL 中是否存在某些单词 例如 如果 URL 中包含 汽车 一词 例如 www domain com car 或 www domain com car audi 它将回显 汽车存在 如果没有任何内容 则会回显 没有汽车 尝试这样
  • 如何获取 git 最新提交消息并阻止 jenkins 构建(如果提交消息包含 [ci Skip])?

    我尝试在 jenkinsfile 中获取 git 提交消息并阻止基于提交消息的构建 环境GIT COMMIT不返回 jenkinsfile 中的提交详细信息 如何获取 git 最新提交消息并阻止 jenkins 构建 如果提交消息中包含 c
  • 如何将两个不同的项目指向同一个 SQLite 数据库文件?

    我有一个简单的问题 我的应用程序有 2 层 前端层和数据访问层 位于不同的项目中 我正在通过数据访问层中的迁移在数据访问层中创建一个 sqlite 数据库 现在我想使用连接字符串 我正在数据访问层中创建一个上下文 如下所示 public c
  • 提交前检索表单提交内容

    是否可以在提交表单之前计算表单提交 URL 目前我正在这样做 var form myForm var action form attr action var params input form each function index inp
  • 标准URL编码功能?

    Delphi 是否有与此 net 方法等效的方法 Url UrlEncode Note我已经好几年没有使用德尔福了 当我通读答案时 我注意到当前标记的答案有一些注释和替代方案 我还没有机会测试它们 所以我的答案基于最受支持的人 为了您自己的
  • apache Camel - seda 端点多播

    from seda start multicast new GroupedBodyAggregationStrategy parallelProcessing to seda process1 seda process2 end to se
  • Play框架2.0 JPA Mysql错误:无法构建EntityManagerFactory

    我试图使用 Play 框架 2 0 构建一个 Java 项目 我尝试在剧中配置JPA 如下所示 conf 应用程序 conf Database configuration You can declare as many datasource
  • 如何禁用 Firefox 加载项在启动时进行更新检查 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我使用 cron job 通过命令行启动 Firefox Linux 当附加组件没有更新时 它会正常启动 然后我可以告诉它要做什么 但是 如果附加组件
  • 显示/隐藏情节的图例

    我对 python 比较陌生 正在开发 pyqt GUI 我想提供一个复选框选项来显示 隐藏绘图的图例 有没有办法隐藏传说 我尝试过使用 pyplot 的 nolegend 并且它似乎适用于选定的图例条目 但如果应用于所有条目 它会创建一个
  • Ubuntu 16.04:致命错误:X11/Xlib.h:没有这样的文件或目录

    我正在尝试安装 Rgtk2 拨浪鼓的依赖项 我通过 Anaconda 使用 R 我收到以下错误 In file included from Rgtk c 7 0 usr include gtk 2 0 gdk gdkx h 32 10 fa
  • 如何检查 iptables 中每个规则的命中计数?

    我想知道如何从使用 iptables 创建的访问列表中找出访问了哪个规则以及访问了多少次 我的防火墙在 iptables 中有超过 1000 个输入和输出规则 我想知道它们每个被访问了多少次 例如 假设我有以下规则 iptables A I
  • 更改多个绘图的 ggplot 中的 y 轴限制

    我有以下ggplot 这是使用以下脚本生成的 df long lt melt df ggplot df long aes x variable y value geom boxplot facet wrap variable scales
  • 每次点击时 jQuery 克隆 div

    我有一个简单的表单 并有一个按钮可以在单击时克隆我的表单 问题是 当我第一次单击按钮时 它工作正常 但下次单击时它会附加许多 div 有没有办法每次点击都一张一张复制 这是我的片段 document ready function Add c
  • 在不同的 Windows 和 Mac 机器之间共享 Android Studio 项目

    我有一个在 Windows 下构建的 Android Studio 项目 现在当我将所有文件夹复制到 Mac 并尝试在 Mac 版本的 Android Studio 中打开它时 它会提示很多错误 大多数错误都指向 Windows 计算机上的
  • 如何从 SwiftUI 中的另一个视图删除列表中的项目?

    我制作了一个练习应用程序 其中主视图是一个简单的列表 当点击列表中的项目时 它会显示详细视图 详细信息视图中有一个 删除 按钮 用于删除该项目 如何从详细视图中删除每个项目 主要观点 struct ContentView View Envi
  • 派生类的友元的成员访问规则,其中命名类是基类

    All standard references below refer unless noted otherwise to N4861 March 2020 post Prague working draft C 20 DIS https
  • jQuery 函数绑定“输入属性更改”未按预期触发

    我有 jQuery 代码调用这样的函数 text area bind input propertychange function 绑定到该函数的元素是文本区域 当我键入并删除文本时 该函数会被调用 但是当我通过热键或拖动鼠标选择所有文本 然
  • 从 Swift macOS 应用程序中调用 git 命令

    我正在尝试从我的应用程序中调用终端命令 特别是 git 命令 在最简单的情况下 我们只是说我想打电话git status对于给定的目录 我的应用程序的目的是对 git 进行包装 以提供 git 工具的使用 而无需用户与命令行进行任何直接交互