Pregunta

¿Alguien sabe cómo crear una confirmación utilizando los enlaces Ruby (la gema "resistente") para libgit2?Probé todos los ejemplos que pude encontrar, en la guía de uso de libgit2 y en la página de github de gemas robustas, y ninguno de los ejemplos para crear o editar una confirmación funciona.

Esto ha sido útil para intentar descubrir cómo comprometerse hasta ahora, excepto que es para libgit2 en sí y no para los enlaces de Ruby. http://librelist.com/browser//libgit2/2011/2/19/initing-a-repository-adding-files-to-the-index-and-committing/#d94ce8df18ff0202ce904180286a4a85

Cuando intento realizar una confirmación, siguiendo los pasos de la página de Rugged Github, aparece esto;

pry(main)> Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree )
TypeError: wrong argument type nil (expected String)

Y cuando intento seguir la guía de uso de libgit2, que básicamente dice obtener el compromiso y luego simplemente editarlo usando commit.message= me gustan los comandos, pero luego obtengo noMethodErrors porque no hay ningún método 'message='.

Guía de uso de libgit2: http://libgit2.github.com/api.html
Documentación robusta 0: http://rubydoc.info/gems/rugged/0.16.0/frames
Página robusta de Github: https://github.com/libgit2/rugged

Editar:Cómo reproduzco esto; http://pastebin.com/wnta8FWm
Editar_n+1:También intenté usar el sha del árbol en lugar de un objeto Rugged::Tree, intentando

x=Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree.oid )

Pero eso produjo exactamente el mismo error que antes.

¿Fue útil?

Solución 2

TL;DR --- Esto es lo que me solucionó: gem install --prerelease rugged

Después de investigar un poco y experimentar mucho, creo que he descubierto el problema.

cuando lo hice gem install rugged me dio la versión 0.16.0.Esta era la versión con la que estaba teniendo problemas, y cuando probé las pruebas que venían con la gema, muchas de las pruebas fallaron y muchas de las que fallaron parecían estar relacionadas con confirmaciones y escritura de confirmaciones.

La página de Rubygems para la gema Rugged muestra que hay una versión 0.17.0.b6 disponible, lo que me confundió porque nunca había encontrado la opción '--prerelease' para gem.Esa versión debe ser una versión preliminar porque después de hacer gem install --prerelease rugged Se instaló (también) la versión 0.17.0.b6.

Ahora con 0.17.0.b6 puedo seguir la documentación sin problemas.

Una nota extra, la documentación que he leído no lo menciona pero sí el código fuente en ext/rugged_commit.c tiene comentarios que mencionan un :update_ref=>'' opción al crear una confirmación que puede usar para actualizar la referencia para que apunte a la nueva confirmación.Sin esta opción, la confirmación se creará y se escribirá en ODB, pero no se actualizarán las referencias y, por lo tanto, no se podrá acceder a la confirmación desde ninguna de sus ramas.

Otros consejos

Rugged::Commit.create(repo, data) no es lo que hay en el readme.¿Qué código estás ejecutando?Eso simplemente parece que te estás perdiendo un campo requerido.¿Qué campos estás llenando y cómo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top