JGit und EGit werden erwachsen

JGit-Persistenz

JGit persistiert die Git-Daten standardmäßig ins lokale Filesystem. Mittlerweile gibt es auch ein DHT (Distributed Hash Table) API, das es erlaubt, für die Git-Daten eine NoSQL-Datenbank-Persistenzschicht zu implementieren. Shawn Pearce hat auch mehrere Implementierungen (u. a. für HBase) erstellt, hat aber bisher leider keine performante Lösung gefunden, die auch für größere Repositories gut funktioniert, da der Verwaltungsaufwand für die Ablage der Git-Objekte in einer Datenbank relativ groß ist (siehe Commit Message unter [5]). Deswegen arbeitet das Projektteam jetzt an einer Lösung, die die Git-Daten direkt in ein verteiltes Filesystem oder einen Blob Storage (z. B. Hadoop-Filesystem, Amazon S3) persistiert, ein entsprechendes API wurde vorgeschlagen [5], an entsprechenden Implementierungen wird gearbeitet. Erste Experimente zeigen vielversprechende Ergebnisse. Diese Ansätze sollen JGit besser für den Einsatz in Cloud-Umgebungen vorbereiten und Skalierung zu sehr großen Datenbeständen mit redundanter Persistenz ermöglichen. Damit sollen dann sehr große Installationen JGit-basierter Serverlösungen wie Gerrit leichter realisierbar und einfacher betreibbar gemacht werden.

EGit

Alle wichtigen Abläufe im Umgang mit Git Repositories werden nun weitgehend von EGit unterstützt. Dementsprechend kommt seit dem Indigo Release die Umsetzung der Git Roadmap der Eclipse Foundation, die die Migration aller Repositories von CVS und Subversion nach Git zum Ziel hat, nun richtig in Fahrt. Viele der größeren Projekte wie JDT, CDT, die Eclipse-Plattform usw. wurden mittlerweile von CVS nach Git migriert. Für fortgeschrittene Features, die EGit noch nicht anbietet, und für das Scripting von Abläufen empfiehlt sich weiterhin auch die Installation von native Git [6]. Im Weiteren werde ich einige der neuen Features, die seit Helios fertiggestellt wurden, kurz vorstellen.

Rebase (seit 0.10)

Seit EGit 0.10 unterstützt EGit Rebase mit den Optionen abort, skip und continue, falls beim Rebase Konflikte gefunden werden (Abb. 2). Mithilfe des Merge-Tools können Konflikte aufgelöst werden (Abb. 3).

Abb. 3: Merge-Tool
Fetch Change from Gerrit Wizard (seit EGit 0.11)

Mit dem Fetch a Change from Gerrit Wizard können bequem Changes von Git Repositories, die von Gerrit gehosted werden, in einen lokalen Branch transportiert werden. Damit ist der lokale Test eines Changes, der von einem Kollegen in den Code-Review gestellt wurde, nur noch wenige Mausklicks entfernt.

Mylyn-Integration (seit EGit 0.11)

Die EGit-Mylyn-Integration erlaubt es, Daten aus dem aktiven Mylyn Task in die Commit Message zu übernehmen. Dazu muss vor dem Commit der entsprechende Task im Mylyn UI aktiviert und das Mylyn Commit Message Template unter PREFERENCES | TASKS | TEAM konfiguriert werden (Abb. 4). Beim Commit wird dann die Commit Message entsprechend dem konfigurierten Template und dem aktiven Task generiert. In der History View kann umgekehrt der dem ausgewählten Commit zugeordnete Task geöffnet werden (Abb. 5).

Abb. 4: Mylyn Commit Message Template konfigurieren

Abb. 5: History View
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.