Welche Sprache hat die besten Git-API-Bindungen? [closed]
Lesezeit: 5 Minuten
Daniel Upton
Ich schaue mir an, eine Anwendung mit starken Bindungen zu Git zu erstellen.
Gibt es Sprachbindungen und wenn ja, welche sind die umfassendsten?
Würde es bedeuten, zu Bare Metal C zu gehen?
Oder hat Perl / Python / PHP / C # eine Reihe vollständiger Bindungen?
Danke
Daniel
Sprachen haben keine Quellcodeverwaltungsbindungen. IDEs tun.
– Oded
27. Oktober 10 um 15:37 Uhr
Haha ja, aber ich meine, hat die Anwendung eine API, die ich aufrufen kann? oder muss ich das Zeug, das mit Git interagiert, selbst in C schreiben?
– Daniel Upton
27. Oktober 10 um 15:39 Uhr
OK … Sie suchen also nach GIT API Einbände in verschiedenen Sprachen.
– Oded
27. Oktober 10 um 15:42 Uhr
Ja, sorry, wenn ich unklar war … werde den Titel jetzt ändern! Danke
– Daniel Upton
27. Oktober 10 um 15:44 Uhr
Ich würde nicht Java empfehlen; Während JGit/EGit sicherlich aktiv weiterentwickelt werden, sind sie bei weitem nicht umfassend. (Als ich das letzte Mal nachgesehen habe, war es so schlimm, dass ich es als aktiv schädlich ansehen würde, jemanden zu ermutigen, EGit anstelle von Git selbst zu verwenden.)
– Kaskabel
27. Oktober 10 um 15:59 Uhr
Jakub Narębski
Es gibt drei verschiedene Ansätze in Bezug auf die Verwendung von Git innerhalb einer Programmiersprache:
Neuimplementierung von Git in verschiedenen Sprachen. Das leisten folgende Projekte:
Streugut ist eine Ruby-Bibliothek zum objektorientierten Extrahieren von Informationen aus einem Git-Repository, einschließlich a teilweise native Ruby-Implementierung. Wird zB von GitHub verwendet.
GitSharp Dies ist eine Remplemantation von Git in C# für .NET und Mono und folgt JGit wrt. Funktionalität,
Dulwich Dies ist eine reine Python-Lese-Schreib-Implementierung der Git-Dateiformate und -Protokolle.
Git::PurePerl ist eine reine Perl-Schnittstelle zu Git-Repositories (sie basierte anfangs hauptsächlich auf Grit).
Gleiten ist “git library in PHP” – reine PHP-Implementierung. Wird von seinem Autor für eWiki verwendet.
NGit .NET-Port von JGit, der von Monodevelop verwendet wird
Das Problem bei Neuimplementierungen besteht darin, dass sie nicht immer die volle Funktionalität implementieren und diese manchmal falsch implementieren. Andererseits sind sie nativ, implementieren eine gute Leistung; Sie können anders lizenziert sein als die (ursprüngliche) C-Implementierung von Git, bei der es sich um GPLv2 handelt.
Wrapper die Git-Befehle aufrufen und umbrechen, resultieren in irgendeiner Art, passend zur Zielsprache.
Der Git.pm Modul, das mit Git verteilt wird (und von einigen seiner Befehle verwendet wird), Git::Wrapper und Git::Repository Wrap-Git-Befehle für Perl.
JavaGit ist eine Java-API, die Zugriff auf Git-Repositorys über das Aufrufen von Git-Befehlen bietet.
GitPython ist eine Python-Bibliothek, die zur Interaktion mit Git-Repositories verwendet wird, indem die ausführbaren Git-Dateien aufgerufen und die Ausgabe analysiert werden.
Das Problem mit Wrappern ist, dass sie langsam sein können (sie erfordern das Forken eines Git-Prozesses) und dass Git installiert sein muss, um zu funktionieren.
Beachten Sie auch, dass Git selbst hochgradig skriptfähig ist (z. B. durch Shell-Skripte), dank der Tatsache, dass neben höheren Befehlen für Endbenutzer (Porzellan) Es bietet auch Low-Level-Befehle für die Skripterstellung (Installation).
Endlich gibt es Bindungen an libgit2, was bedeutet, dass es sich um eine reentrante verknüpfbare Bibliothek mit einer soliden API handelt (war ein Google Summer of Code 2010-Projekt).
libgit2 selbst ist eine portable, reine C-Implementierung.
Geef ist ein einfaches Erlang-NIF, das einige der libgit2-Bibliotheksfunktionen für Erlang verfügbar macht. Monodevelop verwendet einen .NET-Port für JGit
Libgit2 ist ein ziemlich neues Projekt; Es ist noch in Arbeit, daher ist noch nicht alles implementiert. Sehen libgit2-Homepage für Details.
Beachten Sie, dass, wenn ich mich richtig erinnere, die Autoren von GitSharp / Git# von ihrer eigenen (Neu-)Implementierung von Git zur Übersetzung von JGit von Java nach .NET gewechselt sind
– Jakub Narębski
25. Juni 11 um 18:01 Uhr
NGit ist wahrscheinlich im falschen Abschnitt, da es (meistens) eine automatisierte Übersetzung von JGit in C# ist. Es sollte wahrscheinlich in die Kategorie der Neuimplementierung fallen, da es keinen Git-Prozess erzeugt, wie es die Wrapper tun.
– Dan Rigby
7. September 11 um 20:26 Uhr
Es ist erwähnenswert, dass die GitSharp-Entwickler irgendwann in den mehr als 4 Jahren, seit dies geschrieben wurde, das Projekt auf Eis gelegt haben, um an libgit2Sharp zu arbeiten. „GitSharp ist eine recht brauchbare und stabile Bibliothek, die von mehreren Projekten verwendet wird, um mit Git-Repositories zu interagieren. Um sich einen Eindruck zu verschaffen, sehen Sie sich die Demo an (siehe unten)! sind viel vielversprechender, um daran zu arbeiten.” GitSharp
– Gummiente
23. Januar 15 um 0:49 Uhr
Sie können versuchen, keine API zu verwenden. git ist als eine Suite von Dienstprogrammen auf verschiedenen Abstraktionsebenen strukturiert. Sie sollten in der Lage sein, einen umfassenden Satz von Dienstprogrammen zu erstellen, die funktionieren, indem Sie diese Dienstprogramme aufrufen und ihre Ausgabe verarbeiten. Viele der High-Level-Git-Befehle sind Shell-Skripte oder Perl-Skripte, die genau dies tun, sodass Sie viele Beispiele in der Git-Quelle selbst haben, die Sie als Beispiele verwenden können.
Gute Beispiele für den Anfang:
magit : Git-Schnittstelle für Emacs, geschrieben in Emacs Lisp
git gui : tcl, kommt mit git
gitk : tcl, kommt auch mit git
gitview : python, kommt mit git im contrib-Verzeichnis.
tig : C, Verlaufsbrowser im Textmodus für git.
Hängt davon ab, was Sie wollen, wie es aussieht, fühlen Sie sich mit C/C# am wohlsten. Git ist in C geschrieben, also wenn du Geschwindigkeit willst, dann solltest du vielleicht damit gehen. Wenn Sie jedoch Codeklarheit und einfaches Schreiben wünschen, ist GitSharp wahrscheinlich die bessere Option.
Ah ok cool =) Ja.. nicht so viel C, aber ich lerne schnell und bin ein bisschen ein Nerd und ich habe Erfahrung mit Objective-C, was wirklich C und ein paar Add-Ons ist. Meine C#-Kenntnisse sind ziemlich gut, meine Güte Die Hauptfrage ist nun, wie gut Git Sharp ist. Könnte ich theoretisch einen Github-Konkurrenten damit schreiben? (Ich werde nicht), aber ist es stark genug?
– Daniel Upton
27. Oktober 10 um 17:11 Uhr
Ich bin mir nicht sicher, ob es das Beste ist, aber für .net gibt es GitSharp
.
6191300cookie-checkWelche Sprache hat die besten Git-API-Bindungen? [closed]yes
Sprachen haben keine Quellcodeverwaltungsbindungen. IDEs tun.
– Oded
27. Oktober 10 um 15:37 Uhr
Haha ja, aber ich meine, hat die Anwendung eine API, die ich aufrufen kann? oder muss ich das Zeug, das mit Git interagiert, selbst in C schreiben?
– Daniel Upton
27. Oktober 10 um 15:39 Uhr
OK … Sie suchen also nach GIT API Einbände in verschiedenen Sprachen.
– Oded
27. Oktober 10 um 15:42 Uhr
Ja, sorry, wenn ich unklar war … werde den Titel jetzt ändern! Danke
– Daniel Upton
27. Oktober 10 um 15:44 Uhr
Ich würde nicht Java empfehlen; Während JGit/EGit sicherlich aktiv weiterentwickelt werden, sind sie bei weitem nicht umfassend. (Als ich das letzte Mal nachgesehen habe, war es so schlimm, dass ich es als aktiv schädlich ansehen würde, jemanden zu ermutigen, EGit anstelle von Git selbst zu verwenden.)
– Kaskabel
27. Oktober 10 um 15:59 Uhr