41 votes

Quelle langue possède les meilleures liaisons API Git?

Je cherche à construire une application avec des liens lourds à git ..

Existe-t-il des liaisons de langue et, le cas échéant, lesquelles sont les plus complètes

Est-ce que cela voudrait dire aller à Bare Metal C?

Ou bien perl / python / php / C # a-t-il un ensemble de liaisons complètes?

Merci

Daniel

76voto

Jakub Narębski Points 87537

Il existe trois approches différentes à l'égard de l'utilisation de Git de l'intérieur de certains langages de programmation:

  • La remise à plat de Git dans une autre langue. C'est ce que les projets suivants ne:

    • JGit qui est la remise à plat de Git en Java (utilisé entre autres par EGit, l' Eclipse plugin Git, et Gerrit de la Revue de Code),
    • Grit est Ruby bibliothèque pour l'extraction d'informations à partir d'un dépôt git dans un objet de façon orientée, qui comprend une partielle natif Ruby mise en œuvre. Par exemple utilisée par GitHub.
    • GitSharp qui est remplemantation de Git en C# pour .NET et Mono, et qui est la suite de JGit wrt. la fonctionnalité,
    • Dulwich qui est pur Python lecture-écriture à la mise en œuvre de la Git formats de fichiers et protocoles.
    • Git::PurePerl est de la pure interface Perl pour dépôts Git (il a été principalement basée sur le Grain, d'abord).
    • Glip est "git bibliothèque PHP" pur PHP de mise en œuvre. Utilisé par son auteur pour eWiki.
    • NGit .NET port de JGit utilisé par Monodevelop


    Le problème avec reimplementations, c'est qu'ils ne sont pas toujours de mettre en œuvre la fonctionnalité complète, et parfois de mettre en œuvre ce mal. D'autre part, ils sont originaires, de mettre en œuvre de bonnes performances; ils peuvent être autorisés différemment que C (original) de la mise en œuvre de Git, qui est la GPLv2.

  • Des Wrappers qui appellent commandes Git et envelopper le résultat d'une certaine sorte, de manière appropriée dans la langue cible.

    • Le Git.pm module distribué avec git (et utilisé par certaines de ses commandes), Git::Wrapper et Git::Référentiel envelopper les commandes git pour Perl.
    • JavaGit est une API Java qui permet d'accéder aux dépôts git via l'appel de commandes git.
    • GitPython est une bibliothèque Python utilisé pour interagir avec les dépôts Git, en appelant le Git exécutables et l'analyse de la production.
    • hs-libgit est Haskell wrapper pour git.


    Le problème avec les wrappers est qu'ils peuvent être lents (ils nécessitent un fork d'un git), et qu'ils ont besoin de git d'être installé pour fonctionner.

    Notez également que git est lui-même de créer facilement des scripts (par exemple à l'aide de scripts shell), grâce au fait qu'à côté de niveau supérieur commandes signifie pour l'utilisateur final (porcelaine) il fournit également des commandes de bas niveau signifiait pour les scripts (plomberie).

  • Enfin, il existe des liaisons de libgit2, ce qui signifie être ré-entrant réticulable de la bibliothèque avec une solide API (Google Summer of Code 2010 projet).

    • libgit2 lui-même est un portable, pur C mise en œuvre.
    • Robuste - Ruby liaisons.
    • php-git - PHP liaisons.
    • luagit2 - Lua liaisons.
    • GitForDelphi - Delphi liaisons.
    • libgit2sharp - .NET liaisons.
    • pygit2 - liaisons Python.
    • Geef est un simple Erlang FIV qui expose certains des libgit2 des fonctions de la bibliothèque d'Erlang. Monodevelop utilise un .NET port pour JGit


    Libgit2 est assez nouveau projet; c'est un travail en cours, donc tout n'est pas mis en œuvre au moment de l'être. Voir libgit2 page d'accueil pour plus de détails.

Toutes ces informations peuvent être trouvées à l' InterfacesFrontendsAndTools page sur Git Wiki

2voto

Tim Schaeffer Points 1807

Vous essayez peut-être pas à l'aide d'un API. git est structuré comme une suite d'utilitaires à différents niveaux d'abstraction. Vous devriez être en mesure de construire un ensemble complet d'utilitaires qui fonctionnent en appelant à l'un de ces utilitaires et du traitement de leur sortie. Beaucoup de haut-niveau de commandes git sont des scripts shell ou perl scripts qui font juste cela, alors vous avez beaucoup d'exemples dans la source de git lui-même à titre d'exemples.

De bons exemples pour commencer:

  • magit : git interface pour emacs écrit en emacs lisp

  • git gui : tcl, est livré avec git

  • gitk : tcl, est également livré avec git

  • gitview : python, est livré avec git dans le répertoire contrib.

  • tig : C, en mode texte de l'histoire browswer pour git.

1voto

Joe D Points 1545

Tout dépend de ce que vous voulez, vous semblez le plus à l'aise avec C / C #. Git est écrit en C, donc si vous voulez de la vitesse, alors vous devriez peut-être aller avec ça. Mais si vous voulez la clarté du code et la facilité d’écriture, GitSharp est probablement une meilleure option.

0voto

Pondidum Points 6541

Je ne sais pas si c'est le meilleur, mais pour .net, il y a GitSharp

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X