¿Cómo puedo get datos binarys del file del repository de Git usando LibGit2Sharp?

He decidido probar y migrar mi proyecto de usar GitSharp a LibGit2Sharp ya que GitSharp ya no se mantiene activamente. Con GitSharp pude acceder a los bytes sin procesar de cualquier file registrado en mi repository dado una twig. No puedo encontrar ninguna documentation o código de ejemplo de cómo se hace esto usando LibGit2Sharp.

¿Puede alguien darme un ejemplo de cómo se hace esto?

El tipo Blob expone una propiedad Content que devuelve un byte[] .

La siguiente testing se extrae del file BlobFixture.cs y demuestra el uso de esta propiedad.

 [Test] public void CanReadBlobContent() { using (var repo = new Repository(BareTestRepoPath)) { var blob = repo.Lookup<Blob>("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); byte[] bytes = blob.Content; bytes.Length.ShouldEqual(10); string content = Encoding.UTF8.GetString(bytes); content.ShouldEqual("hey there\n"); } } 

En esta testing en particular, Blob GitObject se recupera directamente a través del método LookUp() . También puede acceder a Blobs desde la propiedad Files de un Tree .

Con respecto a su request más específica, la siguiente testing unitaria debería mostrarle cómo acceder a los bytes brutos de una Blob desde la punta de una Branch .

 [Test] public void CanRetrieveABlobContentFromTheTipOfABranch() { using (var repo = new Repository(BareTestRepoPath)) { Branch branch = repo.Branches["br2"]; Commit tip = branch.Tip; Blob blob = (Blob)tip["README"].Target; byte[] content = blob.Content; content.Length.ShouldEqual(10); } } 

Nota: Esta testing muestra otra forma de acceder a Blob (como TreeEntry abstracto). Por lo tanto, el uso del elenco.