remove - git library para Go
git remove tag (5)
Desde hace unos años, mi equipo y yo, estábamos codificando una implementación de git pura en Go, evita tener cualquier dependencia de c / c ++ y hacerlo más flexible y fácil de extender.
go-git pretende alcanzar la integridad de libgit2 o jgit, en la actualidad cubre la mayoría de las operaciones de lectura de plomería y algunas de las principales operaciones de escritura, pero carece de las principales operaciones de porcelana, como las fusiones.
Como proyecto favorito, quiero desarrollar una aplicación para tomar notas usando git como dispositivo de almacenamiento. (Sospecho que esto no existe todavía, dada la publicación del blog de este tipo: http://jarofgreen.co.uk/2012/08/how-about-a-mobile-note-app-backed-by-git/ )
Ahora, me gustaría aprovechar esto como una oportunidad para jugar un poco con Go un poco. Sin embargo, parece que no puedo encontrar ninguna (ni siquiera el más pequeño enfoque) de la biblioteca git para Go. ¿Hay realmente alguna?
Obviamente, mi conocimiento de Go es inexistente, por lo que escribir enlaces para libgit no parece ser una forma divertida de comenzar ... (y probablemente recurriría a ruby, que tampoco sé)
Lo que Víctor propuso es, de hecho, la forma "oficial" de "escribir" a Git como lo previeron sus desarrolladores. Los comandos de Git se dividen en los dos grandes grupos específicamente para este propósito: los comandos de "plomería" son de bajo nivel y están diseñados principalmente para ser utilizados por otros programas; el comando "porcelana" está diseñado para interactuar con el usuario, y llamar a los comandos de plomería para hacer su trabajo. Mire dentro del directorio /usr/lib/git-core
(podría ser diferente en su sistema) para tener una idea de cuántos comandos de plomería tiene Git.
Por otro lado, Go admite la vinculación con bibliotecas compartidas a través de su instalación de cgo
. Por lo tanto, podrías intentar envolver libgit2
con él. AFAIK, libgit2
aún no está totalmente a la par con el propio Git, pero es capaz de leer / escribir repositorios de Git, hacer ramificaciones, etc. - supuestamente será suficiente para su tarea.
De acuerdo, después de que escribí todo eso, libgit2
la entrada "Enlaces" en el sitio de libgit2
y encontré go-git
...
Una búsqueda de "git" en GoDoc muestra algunos proyectos. Hay un contenedor libgit2, y en la parte inferior hay una implementación Git sin terminar en Go .
Simplemente puede pagar el comando git
usando el paquete os/exec de la biblioteca estándar de Go.