validate users repositories limiting example developer c# c git binding

c# - users - github pagination



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

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.

Estoy buscando construir una aplicación con fuertes lazos 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 conjunto completo de enlaces?

Gracias

Daniel


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


Puede intentar no usar una API. git está estructurado como un conjunto de utilidades en diferentes niveles de abstracción. Debería poder construir un conjunto completo de utilidades que funciona llamando a estas utilidades y procesando su salida. Muchos de los comandos 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 directorio contrib.

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


Hay tres enfoques diferentes con respecto al uso de Git desde dentro de un lenguaje de programació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 repositorio git de forma orientada a objetos, 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 formatos y protocolos de archivos Git.
    • Git :: PurePerl es una interfaz pura de Perl para los repositorios 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 comandos de Git y lo envuelven resultan en algún tipo, de manera adecuada para el idioma de destino.

    • El módulo Git.pm distribuido con git (y utilizado por algunos de sus comandos), los comandos Git :: Wrapper y Git :: Repository wrap git para Perl.
    • JavaGit es una API de Java que proporciona acceso a los repositorios de git a través de comandos de llamada git.
    • GitPython es una biblioteca de Python que se usa para interactuar con los repositorios 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 proceso de git), y que requieren la instalación de git para que funcionen.

    Tenga en cuenta también que git sí mismo es altamente programable (por ejemplo, utilizando scripts de shell), gracias al hecho de que junto a los comandos de nivel superior para el usuario final ( porcelana ) también proporciona comandos 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 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