Wie benutzt man Git auf Android?

73

Ich habe eine Desktop-Anwendung, die Git für die Synchronisation verwendet. Ich habe auch eine Android-Anwendung, die das Gleiche wie der Desktop tut, aber ich weiß nicht, wie ich den Synchronisationsteil darauf machen soll. Ich habe keine Implementierung von Git auf Android gefunden. Ich habe ein JGIT gefunden, aber es ist nicht gut dokumentiert und ich konnte nicht einmal ein Commit damit machen.

Ich habe über Remote-Befehle für meinen Git-Server von meiner Android-App nachgedacht, aber das ist wirklich ein Scherz für mich. Können Sie mir sagen, ob es eine andere Git-Implementierung gibt, die auf Android verwendet werden kann? Wenn Sie eine Idee haben, wie Sie das lösen können, sagen Sie es mir bitte.

Dave
quelle
sry, keine Zeit zu antworten; Was ist mit Terminal IDE? siehe lox-o-drome.blogspot.de/2012/08/…
jan-glx
@YAK Leider scheint die Terminal-IDE nicht mehr gewartet zu werden. Zumindest funktioniert es nicht, seit ich auf Lollipop aktualisiert habe.
Brian
@brianary das riesige "** derzeit nicht kompatibel mit ANDROID 5.0 ​​LOLLIPOP **" in der Beschreibung im Play Store zeigt an, dass es noch gewartet wird und dass eines Tages ein Fix eintreffen könnte
jan-glx
@YAK Versteckt für mich unter der Falte, fürchte ich. Musste in die vollständige Beschreibung klicken, um es zu sehen. Riesig = All-Caps, fair genug.
Brian

Antworten:

14

Eine andere Option ist die Verwendung von ASE. Unter https://github.com/jelmer/dulwich scheint es eine voll funktionsfähige reine Python-Implementierung von git zu geben .

Rascalking
quelle
aber wie installiert man dulwich auf ASE? ASE ist nur für Skripte, es kann nicht zum Ausführen realer Anwendungen verwendet werden, zumindest habe ich es noch nicht ausprobiert, aber das Modul distutils.core wurde nicht gefunden ....
Dave
1
Von code.google.com/p/android-scripting/wiki/FAQ : Kann ich andere Python-Module installieren? Ja. Viele reine Python-Module funktionieren, wenn Sie sie einfach zu / sdcard / ase / extras / python hinzufügen, solange sie nicht von C-Python-Modulen abhängen, die nicht in ASE enthalten sind. Sie können natürlich Ihre eigenen C Python-Module übergreifend kompilieren. Aber das ist nichts für schwache Nerven. Python-Eier müssen manuell installiert werden. Das heißt, Sie müssen die Python-Module manuell an den entsprechenden Speicherort kopieren. ASE unterstützt easy_install nicht.
Rascalking
17

Seit diese Frage zum ersten Mal veröffentlicht wurde, wurde dem Markt eine Android-App namens Agit hinzugefügt, die Git-Repos auschecken kann . Es kann noch nicht festgeschrieben oder gepusht werden, aber die Klon- / Abruf- / Pull-Funktion ist nützlich. Das andere Problem ist, dass eine gepatchte Version von ConnectBot vor Agit installiert werden muss, wenn Sie SSH-Schlüssel verwenden möchten. Wenn Sie ConnectBot bereits haben, deinstallieren Sie es zuerst. Ich habe das nicht getan und bin auf Probleme gestoßen.

Polymathica
quelle
9
Hallo, ich bin der Autor von Agit. Ich wollte nur erwähnen, dass es hier Anweisungen zur Einrichtung von SSH für Agit gibt. Seitdem habe ich auch die App verbessert, damit Sie weitere Anleitungen erhalten, wenn kein bereits installiertes SSH gefunden werden kann Agent :)
Roberto Tyley
2
Link zu Agit ist tot.
Guettli
11

Wenn das Gerät gerootet ist, können Sie auch die Debootstrap- Anwendung ( http://wiki.debian.org/Debootstrap ) von debian verwenden , um ein Debian / Armel-Image zu erstellen, es in Ihr Android-Gerät zu mounten und darauf zu chrooten Jedes für armel verfügbare Paket kann auf Ihrem Gerät installiert werden (um git zu installieren: aptitude install git). Hier finden Sie Informationen zur Installation von Debian für Ihr Android: http://lanrat.com/install-debian-on-android/

Emerino
quelle
8

Einige andere Lösungen, die jetzt verfügbar sind, neben Agit , seit diese Frage zuletzt beantwortet wurde:

  • Ein Git & Mercurial Client für Bitbucket namens Bitbeaker

  • Eine Git-App von Github

  • Die Android Java IDE AIDE verfügt auch über Git-Funktionen, sodass Sie sie aus einem Git-Verzeichnis herunterladen und, wenn es sich um eine Android-App handelt, ändern und auch ausführen können.

Wissen ist Macht
quelle
6
AIDE unterstützt auch Push, jedoch nur in der Premium-Version. Github- und Bitbeaker-Apps sind schreibgeschützt.
Beni Cherniavsky-Paskin
7

Sie können auch Pocket Git ausprobieren: https://play.google.com/store/apps/details?id=com.aor.pocketgit

Pocket Git unterstützt SSH (mit Passphrasen, aber private Schlüssel scheinen einige Probleme zu haben) und HTTP, Klonen, Stage, Unstage, Commit, Push und Pull. Zweige erstellen, löschen und zusammenführen; und es hat auch einen grafischen Protokoll-Viewer und kann Unterschiede anzeigen.

Haftungsausschluss: Ich bin der Entwickler

André Restivo
quelle
ein Pocket Git Binärdateien aus dem Android-Dateisystem verwenden und auf Git Repo pushen? Funktioniert es mit Repo für einzelne Dateien wie denen auf gist.github.com?
Lambder
Es funktioniert mit Kernelementen (gerade getestetes Klonen, Ändern, Staging, Commit und Pushing). Ich bin mir nicht sicher, ob ich Ihre erste Frage verstanden habe. Sie können jedes Repo klonen, jede Datei ändern (Pocket Git bietet keinen Editor, aber Sie können die Dateien mit anderen Apps öffnen), das Repo bereitstellen, festschreiben und zurückschieben.
André Restivo
Ich habe gerade Ihre App gekauft und einige Tests durchgeführt. Alles funktioniert gut. Das einzige, was ich erwartet hatte, war, eine neue Datei zu erstellen, indem ich auf eine vorhandene auf dem Gerät zeigte. Wie auch immer, ich wollte es erreichen, indem ich den ES-Datei-Explorer verwendete, um eine Datei in den Git-Repo-Ordner zu kopieren und sie mit Ihrem PocketGit zu verschieben. Tolle App. Vielen Dank.
Lambder
Ich habe dies gekauft, aber leider tritt beim Versuch, mit einem privaten Schlüssel (der in anderen Clients funktioniert) zu klonen, ein Fehler auf, und ich möchte mein Passwort nicht eingeben. Keine Antwort vom Entwickler. Mein Rat wäre, das zweitägige Google-Rückerstattungsfenster zu verwenden, um zu überprüfen, ob diese App das tut, was Sie benötigen.
Adam Millerchip
6

Ich würde vorschlagen, einen Blick auf Gidder zu werfen . Es ist eine Git-Server-Implementierung für Android mit Benutzer- und Repository-Verwaltung und unterstützt auch dynamisches DNS. Sie können Ihren Code einfach auf Ihrem Android-Gerät speichern und über eine WiFi-Verbindung darauf zugreifen.

antoniy
quelle
2
Das sieht gut aus, aber es scheint keine Möglichkeit zu geben, Änderungen vorzunehmen ... ist das möglich? Wenn nicht, scheint es ein bisschen sinnlos zu sein, pushen zu können ...
naught101
@antoniy Kann ich auf git repo einen Ordner auf der SD-Karte auswählen?
Khurshid Alam
6

MGit ist der Nachfolger von SGit und es funktioniert sehr gut für mich.

smartwjw
quelle
Eine ziemlich fehlerhafte Anwendung.
0xInfection
4

In den Antworten wurden viele bereits vorhandene Apps veröffentlicht. Die folgenden Links können jedoch für diejenigen hilfreich sein, die nach einer eigenen Implementierung suchen:

  1. libgit2

    Dies ist eine reine C-Implementierung, die behauptet, sehr portabel zu sein. Das Projekt beschreibt auch, wie die Quellen für die Android-Plattform kompiliert werden . Jetzt muss eine JNI-Bindung dafür geschrieben werden. In einigen Fällen würde sogar eine ausführbare Binärdatei ausreichen.

  2. HTTP (dumm) Protokoll

    Alternativ kann dieses Protokoll über HTTP implementiert werden, wenn Sie nur an Lesevorgängen aus einem Repository interessiert sind. Es gibt auch ein intelligentes Protokoll, das von ssh abhängt und differenzielle Übertragungen durchführt.

  3. JGit-Kernquellen

    Verwenden Sie nur das Kernpaket aus seinen Quellen. Alle javax.*Abhängigkeiten und andere inkompatible / fremde Klassen müssen jedoch durch Android-Alternativen ersetzt werden. Aber die Mühe lohnt sich, wenn eine reine Java-Implementierung auf Android portiert werden kann.

SD
quelle
4

Aktualisieren:

Kommentar unter dieser Antwort von OP- (Nathan Osman)

Leider musste ich die Anwendung nach einigen kürzlich vorgenommenen Richtlinienänderungen im Play Store abrufen, bei denen Publisher ihre Adresse auf der Store-Seite der Anwendung anzeigen mussten.


Ursprüngliche Antwort

Ich habe gerade (ca. April 2013) eine App im Play Store namens GitDroid veröffentlicht . Mit der Anwendung können Sie Folgendes tun:

  • Klonen Sie Remote-Repositorys
  • Ziehen Sie von der Fernbedienung und führen Sie neue Revisionen zusammen
  • Commits anzeigen und Dateien durchsuchen

Registerkarte "Übersicht" von GitDroid

Die App kann noch nicht auf eine Fernbedienung übertragen oder lokale Commits vornehmen - dies ist für ein zukünftiges Update geplant.

Nathan Osman
quelle
2
Zukunft bezieht sich hier auf etwas, das noch in der Zukunft liegt. Wann kann mit der Umsetzung von Push gerechnet werden?
Jan-Glx
1
@Maximus Leider musste ich die Anwendung nach einigen kürzlich vorgenommenen Richtlinienänderungen im Play Store abrufen, bei denen Publisher ihre Adresse auf der Store-Seite der Anwendung anzeigen mussten.
Nathan Osman
Ehrlich gesagt ist diese Anforderung dumm - viele einzelne Entwickler werden ihre Privatadresse nicht für alle sichtbar veröffentlichen!
Michael
Wie wäre es mit F-Droid?
Alen Siljak
3

Probieren Sie SGit aus , es kann SSH mit pssphrasenlosen Schlüsseln festschreiben und übertragen und ist auf F-Droid verfügbar . Es basiert auf JGit. Es ist (noch) nicht perfekt und die JGit-Implementierung ist nicht so gut wie die ursprüngliche Git, sieht aber brauchbar aus.

Josef Kufner
quelle
2
sgit ist tot. Dies ist der Nachfolger: github.com/maks/MGit
guettli
2

So würde ich es machen:

Nun, Sie möchten wahrscheinlich eine Schnittstelle für Ihre Synchronisationsanforderungen definieren.

Sie implementieren diese Schnittstelle in C sowohl für Desktop- als auch für Android-Geräte (mithilfe des NDK), indem Sie für die Implementierung git (native) verwenden.

Anschließend codieren Sie für die Android-App eine JNI-Ebene darüber, sodass die Schnittstelle für Java verfügbar gemacht wird.

Der schwierige Teil wäre, die verschiedenen Git-Befehle für Android kompilieren zu lassen: Sie müssen Makefiles neu schreiben.

Gregory Pakosz
quelle
1

Update: CubeGit wurde aufgrund von Änderungen im Android-System und fehlender Zeit / Anreize zum Update entfernt. Bitte wählen Sie eine der Alternativen.


Eine weitere Option heißt war CubeGit.

Wir haben CubeGit vor einigen Tagen auf Google Play veröffentlicht .

Es ist eine Schnittstelle zu einer übergreifend kompilierten Git-Binärdatei und unterstützt auch lokale Commits und Push über ssh / http / https.

CubeWorks
quelle
App nicht im Playstore verfügbar.
0xInfection