如何在Android上使用Git?
我有一个桌面应用程序使用git进行同步。 我也有一个android应用程序,做的桌面相同,但我不知道如何做它的同步部分。 我还没有发现在Android上的任何实施的git。 我find了一个jgit,但是它的logging不完整,我甚至无法做到这一点。
我正在考虑从我的android应用程序到我的git服务器的远程命令,但这对我来说真是一个挑逗。 你能告诉我,如果有任何其他可以在Android上使用的git实现存在? 如果你有任何想法如何解决,请告诉我。
另一种select是使用ASE。 在https://github.com/jelmer/dulwich似乎有一个全function的纯Python的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商店中发布了一个应用程序。 该应用程序允许您执行以下操作:
- 克隆远程存储库
- 从远程拉并合并新的修订版本
- 查看提交和浏览文件
该应用程序无法推送到远程或本地提交 – 这是计划在未来的更新。
MGit是SGit的继任者,对我来说效果很好。
这是我将如何做到这一点:
那么你可能想要为你的同步需求定义一个接口。
你用C实现了这个接口,用于桌面和Android设备(在NDK的帮助下),使得实现使用git(native)。
然后,对于Android应用程序,您将在顶部编写一个JNI层,以便将接口公开给Java。
棘手的部分将是为Android编译不同的git命令:你将不得不重写makefile。
答案中已经发布了很多已经存在的应用程序,但是下面的链接可能对那些正在寻找自己的实现的人有用:
-
libgit2
这是一个纯粹的C实现,声称是高度可移植的。 该项目还介绍了如何编译android平台的源代码 。 现在需要做的是为它写一个JNI绑定。 在某些情况下,甚至可执行的二进制文件也是足够的
-
HTTP(愚蠢)协议
作为一种替代方法,如果一个人纯粹对从库中读取操作感兴趣,则可以通过HTTP实现该协议。 还有一个智能协议取决于SSH和差分传输。
-
JGit核心资源
仅使用源代码的核心包。 尽pipe如此,所有的
javax.*
依赖和其他不兼容/外星类都需要用androidreplace。 但是如果一个纯粹的Java实现可以移植到android,那么值得付出努力。
尝试SGit ,它可以使用无短语的密钥来提交和推送SSH,并可在F-Droid上使用 。 它build立在JGit之上。 这不是完美的(但)和JGit实现不如原来的Git,但看起来可用。
另外一个select是CubeGit。
我们几天前在Google Play上发布了CubeGit 。
它是交叉编译的git二进制接口,也支持通过ssh / http / https进行本地提交和推送 。
JGit – http://eclipse.org/jgit/