如何在Android上使用Git?

我有一个桌面应用程序使用git进行同步。 我也有一个android应用程序,做的桌面相同,但我不知道如何做它的同步部分。 我还没有发现在Android上的任何实施的git。 我find了一个jgit,但是它的logging不完整,我甚至无法做到这一点。

我正在考虑从我的android应用程序到我的git服务器的远程命令,但这对我来说真是一个挑逗。 你能告诉我,如果有任何其他可以在Android上使用的git实现存在? 如果你有任何想法如何解决,请告诉我。

由于这个问题是第一次发布,一个Android应用程序已经被添加到市场上,可以检出Git 仓库 ,名为Agit 。 它不能提交或推送,但克隆/获取/拉取function是有用的。 另一个问题是,如果您想使用SSH密钥,则在Agit之前需要安装补丁版本的ConnectBot 。 如果您已经有ConnectBot,请先将其卸载。 我没有这样做,遇到了问题。

如果设备是根植的,你也可以使用debian的debootstrap( http://wiki.debian.org/Debootstrap )应用程序来创build一个debian / armel图像,将它挂载到你的android设备上,然后chroot到这个设备上。任何可用于armel的软件包都可以安装在您的设备上(安装git:aptitude install git)。 在这里find关于如何安装debian的信息: http : //lanrat.com/install-debian-on-android/

除了Agit之外 ,现在还有其他一些解决scheme,因为这个问题最后得到了回答:

  • bitbucket的git&mercurial客户端称为Bitbeaker

  • 来自github的git应用程序

  • Android Java IDE AIDE也具有gitfunction,所以你可以从git目录下载,如果它的Android应用程序修改并运行的话。

您也可以尝试Pocket Git: https : //play.google.com/store/apps/details? id = com.aor.pocketgit

Pocket Git支持SSH(带有私钥和密码短语)和HTTP,克隆,分期,分期,提交,推送和拉取; 创build,删除和合并分支机构; 它也有一个graphics化的日志查看器,可以显示差异。

免责声明:我是开发人员

我会build议看看Gidder 。 这是Android的Git服务器实现与用户和存储库pipe理,也支持dynamicDNS。 您可以轻松地将您的代码存储在Android设备中,并使用WiFi连接进行访问。

更新:

OP-(Nathan Osman)在回答下面评论道 ,

不幸的是,在Play商店最近发生了一些策略变更之后,我不得不提取应用程序,要求发布商在应用程序的商店页面上显示其地址。


原始答复

我刚刚(大约在2013年4月)在名为GitDroid的Play商店中发布了一个应用程序。 该应用程序允许您执行以下操作:

  • 克隆远程存储库
  • 从远程拉并合并新的修订版本
  • 查看提交和浏览文件

GitDroid的概述选项卡

该应用程序无法推送到远程或本地提交 – 这是计划在未来的更新。

MGit是SGit的继任者,对我来说效果很好。

这是我将如何做到这一点:

那么你可能想要为你的同步需求定义一个接口。

你用C实现了这个接口,用于桌面和Android设备(在NDK的帮助下),使得实现使用git(native)。

然后,对于Android应用程序,您将在顶部编写一个JNI层,以便将接口公开给Java。

棘手的部分将是为Android编译不同的git命令:你将不得不重写makefile。

答案中已经发布了很多已经存在的应用程序,但是下面的链接可能对那些正在寻找自己的实现的人有用:

  1. libgit2

    这是一个纯粹的C实现,声称是高度可移植的。 该项目还介绍了如何编译android平台的源代码 。 现在需要做的是为它写一个JNI绑定。 在某些情况下,甚至可执行的二进制文件也是足够的

  2. HTTP(愚蠢)协议

    作为一种替代方法,如果一个人纯粹对从库中读取操作感兴趣,则可以通过HTTP实现该协议。 还有一个智能协议取决于SSH和差分传输。

  3. JGit核心资源

    仅使用源代码的核心包。 尽pipe如此,所有的javax.*依赖和其他不兼容/外星类都需要用androidreplace。 但是如果一个纯粹的Java实现可以移植到android,那么值得付出努力。

尝试SGit ,它可以使用无短语的密钥来提交和推送SSH,并可在F-Droid上使用 。 它build立在JGit之上。 这不是完美的(但)和JGit实现不如原来的Git,但看起来可用。

另外一个select是CubeGit。

我们几天前在Google Play上发布了CubeGit 。

它是交叉编译的git二进制接口,也支持通过ssh / http / https进行本地提交推送