我有一个使用git进行同步的桌面应用程序。我还有一个Android应用程序,其功能与桌面相同,但我不知道如何在其上进行同步。我还没有在android上找到git的任何实现。我找到了一个jgit,但是它的记录不完整,因此我什至无法提交。
我当时在考虑从我的android应用程序向我的git服务器发送远程命令,但这对我来说真的很有趣。你能告诉我是否有其他可以在android上使用的git实现?如果您有解决办法的任何想法,请告诉我。
我有一个使用git进行同步的桌面应用程序。我还有一个Android应用程序,其功能与桌面相同,但我不知道如何在其上进行同步。我还没有在android上找到git的任何实现。我找到了一个jgit,但是它的记录不完整,因此我什至无法提交。
我当时在考虑从我的android应用程序向我的git服务器发送远程命令,但这对我来说真的很有趣。你能告诉我是否有其他可以在android上使用的git实现?如果您有解决办法的任何想法,请告诉我。
Answers:
另一种选择是使用ASE。在https://github.com/jelmer/dulwich似乎有git的全功能纯python实现。
自从首次发布此问题以来,已经向市场添加了一个可签出Git仓库的Android应用,称为Agit。它尚不能提交或推送,但是克隆/获取/拉功能很有用。另一个问题是,如果要使用SSH密钥,则需要在Agit之前安装补丁版本的ConnectBot。如果您已经拥有ConnectBot,请先将其卸载。我没有这样做,但遇到了问题。
如果设备已植根,您还可以使用debian的debootstrap(http://wiki.debian.org/Debootstrap)应用程序创建一个debian / armel映像,将其挂载在android设备中并chroot到它,您在这里有一定的天赋任何可用于armel的软件包都可以安装在您的设备上(要安装git:aptitude install git)。在此处查找有关如何为Android安装debian的信息:http : //lanrat.com/install-debian-on-android/
自上次回答此问题以来,Agit旁边有一些其他可用的解决方案:
一个名为Bitbeaker的git&mercurial客户
来自github的git应用
Android Java IDE AIDE还具有git功能,因此您可以从git目录下载,如果它是Android应用程序,也可以修改并运行它。
您可以安装https://github.com/termux/termux-app @ https://play.google.com/store/apps/details?id=com.termux,然后只需要打开终端并输入:
apt update
apt install git
您也可以尝试Pocket Git:https://play.google.com/store/apps/details? id = com.aor.pocketgit
Pocket Git支持SSH(带有密码短语,但私钥似乎有一些问题)和HTTP,克隆,暂存,暂存,取消暂存,提交,推送和拉取;创建,删除和合并分支;它还具有图形日志查看器,可以显示差异。
免责声明:我是开发人员
答案中已经发布了许多已经存在的应用程序,但是以下链接对于那些寻求自己实现的人可能有用:
这是一个声称具有高度可移植性的纯C实现。该项目还描述了如何编译android平台的源代码。现在需要做的是为其编写一个JNI绑定。在某些情况下,即使是可执行二进制文件也已足够。
或者,如果您仅对存储库中的读取操作感兴趣,则可以通过HTTP来实现此协议。还有一个智能协议,该协议依赖ssh并进行差分传输。
仅使用源代码中的核心程序包。但是,所有javax.*
依赖项和其他不兼容/外来类都需要替换为android替代品。但是,如果可以将纯Java实现移植到android,则值得付出努力。
更新:
在OP-(Nathan Osman)的答案下方发表评论
不幸的是,在Play商店最近进行了一些政策更改之后,我被迫撤消了该应用程序,该更改要求发行商在其应用程序的商店页面上显示其地址。
原始答案
我刚刚(大约在2013年4月)在Play商店上发布了一个名为GitDroid的应用。该应用程序允许您执行以下操作:
该应用程序无法推送到远程或进行本地提交-计划在将来进行更新。
这就是我要做的:
您可能想为您的同步需求定义一个接口。
通过使实现使用git(本地),您可以在C中为台式机和android设备实现此接口(在NDK的帮助下)。
然后,对于Android应用程序,您需要在顶部编写一个JNI层,以便它向Java公开接口。
棘手的部分是要为Android编译不同的git命令:您将不得不重写makefile。
更新:由于Android系统内部的更改以及缺少时间/更新动机,CubeGit已被删除。请选择一种方法。
还有一个选择就是 为CubeGit。
几天前,我们已在Google Play上发布了CubeGit。
它是交叉编译的git二进制文件的接口,还支持本地提交和通过ssh / http / https进行推送。
您可以使用Termux在android上安装git。只需从Play商店安装并运行以下命令:
pkg install git
参考:https : //mvprepublic.com/blog/2020/04/08/how-to-run-git-on-android-devices/