Uso de referencias principales

Estoy usando libgit2sharp y me gustaría obtener un Commit objeto que representa algo como HEAD~10. Lo intenté repo.Lookup("HEAD~10"), pero eso no funciona:

LibGit2Sharp.LibGit2Exception: libgit2 generó un error. Clase = GITERR_REFERENCE (-1).
El nombre de referencia dado no es válido
  en LibGit2Sharp.Core.Ensure.Success (resultado Int32, booleano allowPositiveResult)
  en LibGit2Sharp.ReferenceCollection.Resolve[T](nombre de cadena)
  en LibGit2Sharp.Repository.Lookup(String shaOrReferenceName, tipo GitObjectType, LookUpOptions lookUpOptions)
  en LibGit2Sharp.Repository.Lookup(String shaOrReferenceName, tipo GitObjectType)
  en libgit_tmp.Program.Main(String[] argumentos)

Me doy cuenta de que podría hacer lo mismo con algo como el siguiente código, pero aun así preferiría que pudiera especificar la referencia de esta manera. ¿Hay alguna forma de hacerlo? Si no, ¿es una limitación de libgit2sharp o de libgit2?

var commit = repo.Head.Tip;
for (int i = 0; i < 10; i++)
    commit = commit.Parents.First();

preguntado el 12 de junio de 12 a las 14:06

1 Respuestas

Desafortunadamente, LibGit2Sharp no puede aceptar parámetros siguiendo el sintaxis de especificación de revisión rev-parse.

La solución propuesta es actualmente la mejor implementación posible. Es totalmente compatible con la documentación que establece

un sufijo ~ a un parámetro de revisión significa el objeto de confirmación que es el ancestro de la generación th del objeto de confirmación nombrado, siguiendo solo a los primeros padres.

Sin embargo, una característica ha sido recientemente Fusionada en la rama de desarrollo de libgit2 que puede cubrir la necesidad de "recuperar referencias principales" y más allá.

Una buena API es ahora Carros Disponibles y hace posible recuperar un objeto git concreto a partir de una especificación textual de revparse. Para obtener un vistazo rápido a su uso, las pruebas están disponibles aquí.

La vinculación de esta API y su amplia disponibilidad para LibGit2Sharp aún no se ha hecho.

Respondido el 12 de junio de 12 a las 16:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.