iPhone上有Git客户端吗?如何实现?

12

是否可以在iPhone应用程序中嵌入git?只能以被动模式实现,即能够读取提交信息(包括日期和用户)和差异,并给定一些在线git存储库,以便将其呈现在某些可读的表视图中。

7个回答

12

我是cocoagit的共同作者之一,它是一个用Objective-C实现的Git核心功能未完成的实现。过去六个月里没有太多的活动。不幸的是,它还没有完全满足你的需求。我们可以读取提交记录,并且具备克隆存储库的初步支持,但我们还不能做差异比较。Geoff和我都希望再有更多时间来继续开发,但在此期间,我们非常欢迎任何贡献。

或者,我也赞同之前帖子中其他人的建议,考虑使用Github或构建自己的Web服务来提供所需的数据。


我注意到你的实现是 MIT 许可证。由于 Git 本身是 GPL,你是否已经采取适当措施避免 "污染"? - Colin Barrett
2
是的。大部分代码都是在没有查看git-core C源代码的情况下编写的。相反,我们使用了所有可用的git内部文档,以及jgit(Java实现-BSD)和grit(Ruby-MIT)的源代码作为实现细节的参考。我曾经打开过C git代码几次,以验证一些有关内部“管道”命令如何工作的细节,但在这些情况下,我只是提前做了一些笔记,而没有为cocoagit编写任何代码。 - Brian Chapados

7

Git(命令行客户端)已被移植到越狱的iPhone上。


2
它在Cydia上。但是这是一个相当旧的git版本。Stevens-iPhone-5:~ mobile$ git --version git version 1.5.6.rc0虽然它确实可以工作,但如果你想让手机上的工作流程不成为令人抓狂的事情,那么需要一些脚本编写和聪明才智。 - Steven Lu

6

编写一个生成iPhone专用格式输出的Web应用程序会更加容易。虽然在iPhone上任何事情都是可能的,但如果想要在其上发布应用程序,则需要支付99美元的会员费,并通过审核流程的考验。而Web应用程序则不需要经过任何人的审核。


5
如果您能将所需的Git功能静态编译到可执行文件中,那就可能实现。不过,这需要将存储库克隆到设备的磁盘上。
我不确定您的使用情况是什么,但是使用托管网站(如GitHub)或创建自己的网络服务(如果不可能)可能更合理。

2

2

值得一提的是:libgit2库采用宽松许可证GPLv2 with Linking Exception。可以与开源和专有软件链接,没有任何限制。 - Anton Matosov

1

你有几个选择:

1)将git(1)交叉编译为ARM和iPhone,然后嵌入它们。 2)使用Dulwich并编写一个小工具,您可以使用NSTask驱动它来执行所需操作(不要直接链接您的代码或复制其实现--它是GPL)。这比选项1更容易。 3)编写一个Web服务器,执行所需操作,然后让您的iPhone客户端访问它。

这真的取决于您正在做什么,为什么要这样做以及您已经设置了哪些基础设施,哪个选项最好。例如,如果您已经拥有任何类型的服务器组件(例如推送通知),我建议选择选项3。


1
iPhoneOS上不支持NSTask。 - Grant Paul
有很多方法可以在不使用NSTask的情况下进行shell操作。 - Colin Barrett
1
Springboard(主屏幕)会终止任何它没有启动的进程。执行外壳命令不是一个选项,因此您无法启动单独的开源工具。不幸的是,OP将无法使用主要的git实现。 - Becca Royal-Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接