¿Qué idioma tiene los mejores enlaces de Git API?

Estoy buscando build una aplicación con fuertes loops con Git.

¿Hay enlaces de idiomas disponibles y, de ser así, cuáles son los más completos?

¿Significaría ir al Bare Metal C?

¿O tiene perl / python / php / C # un set completo de enlaces?

Gracias

Daniel

Hay tres enfoques diferentes con respecto al uso de Git desde dentro de un lenguaje de progtwigción:

  • Reimplementación de Git en diferentes idiomas. Eso es lo que hacen los siguientes proyectos:

    • JGit, que es la reimplementación de Git en Java (utilizado entre otros por EGit , el plugin Eclipse Git y Gerrit Code Review ),
    • Grit es la biblioteca de Ruby para extraer información de un repository git de forma orientada a objects, que incluye una implementación nativa parcial de Ruby. Utilizado, por ejemplo, por GitHub.
    • GitSharp, que es reutilización de Git en C # para .NET y Mono, y que sigue a JGit wrt. funcionalidad,
    • Dulwich, que es una implementación de lectura y escritura pura de Python de los formattings y protocolos de files Git.
    • Git :: PurePerl es una interfaz pura de Perl para los repositorys de Git (inicialmente se basa principalmente en Grit).
    • Glip es "biblioteca de git en PHP": implementación pura de PHP. Utilizado por su autor para eWiki.
    • El puerto NGit .NET de JGit utilizado por Monodevelop

    El problema con las reimplementaciones es que no siempre implementan la funcionalidad completa y, a veces, la implementan incorrectamente. Por otro lado son nativos, implementan buen desempeño; pueden tener una licencia diferente a la implementación C (original) de Git, que es GPLv2.

  • Las envolturas que llaman a los commands de Git y lo envuelven resultan en algún tipo, de manera adecuada para el idioma de destino.

    • El module Git.pm distribuido con git (y utilizado por algunos de sus commands), los commands Git :: Wrapper y Git :: Repository wrap git para Perl.
    • JavaGit es una API de Java que proporciona acceso a los repositorys de git a través de commands de llamada git.
    • GitPython es una biblioteca de Python que se usa para interactuar con los repositorys de Git, al invocar los ejecutables de Git y analizar el resultado.
    • hs-libgit es el envoltorio de Haskell para git.

    El problema con los wrappers es que pueden ser lentos (requieren un process de git), y que requieren la installation de git para que funcionen.

    Tenga en count también que git sí mismo es altamente progtwigble (por ejemplo, utilizando scripts de shell), gracias al hecho de que junto a los commands de nivel superior para el usuario final ( porcelana ) también proporciona commands de bajo nivel para scripts ( plomería ).

  • Finalmente, hay enlaces a libgit2 , lo que significa ser una biblioteca enlazable reentrante con una API sólida (fue el proyecto Google Summer of Code 2010).

    • libgit2 en sí es una implementación C portátil y pura.
    • Rugged – Enlaces de Ruby.
    • php-git – Enlaces de PHP.
    • luagit2 – Ligaduras de Lua.
    • GitForDelphi – enlaces de Delphi.
    • libgit2sharp – enlaces .NET.
    • pygit2 – Vinculaciones de Python.
    • Geef es un simple NIF Erlang que expone algunas de las funciones de la biblioteca libgit2 a Erlang. Monodesarrollo utiliza un puerto .NET para JGit

    Libgit2 es un proyecto bastante nuevo; es un trabajo en progreso, por lo que no todo se implementa en el momento del ser. Vea la página de inicio de libgit2 para más detalles.

Toda esta información se puede encontrar en la página InterfacesFrontendsAndTools en Git Wiki

Puede intentar no usar una API. git está estructurado como un set de utilidades en diferentes niveles de abstracción. Debería poder build un set completo de utilidades que funciona llamando a estas utilidades y procesando su salida. Muchos de los commands de Git de alto nivel son scripts de shell o scripts de Perl que hacen justamente esto, por lo que tiene muchos ejemplos en el propio origen de git para usar como ejemplos.

Buenos ejemplos para comenzar:

  • magit: interfaz git para emacs escrita en emacs lisp

  • git gui: tcl, viene con git

  • gitk: tcl, también viene con git

  • gitview: python, viene con git en el directory contrib.

  • tig: C, buscador de historial de modo de text para git.

Depende de lo que quieras, por lo que a ti te parece más cómodo con C / C #. Git está escrito en C, así que si quieres velocidad, entonces tal vez deberías ir con eso. Pero si quiere claridad en el código y facilidad para escribir, GitSharp es probablemente una mejor opción.

No estoy seguro si es el mejor, pero para .net hay GitSharp

    Intereting Posts