【问题标题】:Git bundled into Cocoa app cannot find helpers in bundle捆绑到 Cocoa 应用程序中的 Git 在捆绑包中找不到帮助程序
【发布时间】:2014-01-13 02:55:27
【问题描述】:

上下文:

我有一个 Mac 应用程序。我想在这个应用程序中包含 Git,因为我的应用程序的某些功能使用 Git,我不希望用户必须在他的机器上安装它。

我已经从源代码下载了 Git。我编辑了 Makefile 来声明这两行:

NO_GETTEXT="yesPlease"
CURLDIR=/usr/local

第一行告诉构建过程跳过本地化并只使用英语。 第二行声明了安装libcurl 的路径。我下载了libcurl_devel 并从源代码构建它。这是使 Git 从 httphttps 存储库中拉/推所必需的。

Git 构建成功。然后我将所有生成的文件复制到我的应用程序包中。我正在使用 NSTask 运行 Git 并尝试提取基于 https:// 的存储库。

问题:

我得到的错误是:

fatal: Unable to find remote helper for 'https'

我google了一下,大家都说只要我在构建Git时安装了libcurl,Git就可以使用HTTP和HTTPS地址。而且,事实上,如果我从命令行运行已安装的 Git,它确实可以!

我需要什么:

所以,我一定是缺少路径设置或环境变量或告诉 Git 在哪里找到这些远程助手的东西。它们在我的应用程序包中;下面的屏幕截图显示了它们:

那么:当我从我的应用程序包中运行 Git 时,我到底需要设置什么才能解决这个问题?

【问题讨论】:

  • 我在这里只是在黑暗中刺伤,但是您不应该将捆绑的 Git 指向一个也捆绑的而不是本地安装的 libcurl 吗?
  • 根据我的阅读,只有在构建 Git 时才需要 libcurl。我认为它不需要与应用程序捆绑在一起。而且该错误似乎暗示Git在屏幕截图中找不到“git-remote-https”助手。

标签: macos git cocoa nstask


【解决方案1】:

难以置信。在我终于崩溃并发布这个问题后,我一直试图解决这个问题超过 8 小时零五分钟,我想通了:

Git 有一个名为--exec-path 的选项。我一直像这样将这个参数传递给 NSTask(其中 APP BUNDLE 被用户机器上的应用程序包的路径替换):

--exec-path=[APP BUNDLE]/git/bin

由于bin 是 Git 二进制文件所在的文件夹,我认为这是合适的路径。但是,如果我这样做:

--exec-path=[APP BUNDLE]/git/libexec/git-core

它有效。

【讨论】:

  • 你应该接受你自己的答案——让它变绿!
  • 谢谢!忘记了这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 2012-06-29
  • 2014-10-08
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多