Welche Sprache hat die besten Git-API-Bindungen? [closed]

Lesezeit: 5 Minuten

Welche Sprache hat die besten Git API Bindungen closed
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

Welche Sprache hat die besten Git API Bindungen closed
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:

    • JGit Dies ist eine Neuimplementierung von Git in Java (unter anderem verwendet von EGit, das Finsternis Git-Plugin und Gerrit Code Review),
    • 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.
    • hs-libgit ist Haskell-Wrapper für Git.

    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.
    • Robust – Rubinbindungen.
    • php-git – PHP-Bindungen.
    • luagit2 – Lua-Bindungen.
    • GitForDelphi – Delphi-Bindungen.
    • libgit2sharp – .NET-Bindungen.
    • pygit2 – Python-Bindungen.
    • 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.

Alle diese Informationen finden Sie unter SchnittstellenFrontendsUndTools Seite im Git-Wiki

  • 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

.

619130cookie-checkWelche Sprache hat die besten Git-API-Bindungen? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy