2014-01-13 56 views
1

上下文:

我有一个Mac应用程序。我想在此应用程序中包含Git,因为我的应用程序的某些功能使用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了这一点,大家都说只要我已经安装了libcurl当我建立的Git,Git的将与HTTP工作, HTTPS地址。事实上,如果我从命令行运行已安装的Git,它的确如此!

我需要什么:

所以,我必须缺少的路径设置或告诉Git的在哪里可以找到这些远程助手的环境变量什么的。他们在我的应用程序包中;下面的截图显示了他们:

enter image description here

所以:什么是地狱,我需要为了解决这一问题设定,当我从我的应用程序包中运行git?

+0

我只是在黑暗中刺穿,但不应该将捆绑的Git指向捆绑而不是本地安装的libcurl? –

+0

从我读的内容来看,只有在构建Git时才需要libcurl。我不认为它需要与应用程序捆绑在一起。这个错误似乎意味着Git无法在屏幕截图中找到“git-remote-https”助手。 – Bryan

回答

1

令人难以置信。我一直试图解决这个问题8小时五分钟后,我终于分手并发布这个问题,我知道了:

Git有一个选项叫--exec-path。我已经通过这个参数传递给NSTask这样的(其中APP摞由路径替换为应用程序包的用户的机器上):

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

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

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

它的工作原理。

+0

你应该接受你自己的答案 - 让它绿色! –

+0

谢谢!已经忘记了这一点。 – Bryan