¿Cómo get el origen del mismo file de dos commits diferentes?

Estoy tratando de encontrar la forma de get el origen del mismo file a partir de dos confirmaciones diferentes, pero no puedo encontrar ninguna documentation sobre esto.

Sé que hay Repository.Dif.Compare que es útil, pero solo puedo get Patch de él y eso no ayuda mucho, ya que me gustaría implementar mi propia comparación lado a lado.

¿Alguien puede dar un ejemplo? ¿Es esto posible en libgit2sharp?

Estoy tratando de encontrar la forma de get el origen del mismo file de dos commits diferentes […] ¿Es esto posible en libgit2sharp?

Cada tipo de Commit o Tree expone un indexador de cadenas que permite acceder directamente a TreeEntry través de su ruta. Un TreeEntry puede ser un Blob (es decir, un file), otro Tree (es decir, un directory) o un GitLink (es decir, un submodule).

El siguiente código proporciona un ejemplo rápido de cómo acceder al contenido del mismo file en dos commits diferentes.

 [Fact] public void CanRetrieveTwoVersionsOfTheSameBlob() { using (var repo = new Repository(BareTestRepoPath)) { var c1 = repo.Lookup<Commit>("8496071"); var b1 = c1["README"].Target as Blob; var c2 = repo.Lookup<Commit>("4a202b3"); var b2 = c2["README"].Target as Blob; Assert.NotEqual(b1.ContentAsText(), b2.ContentAsText()); } } 

Me gustaría implementar mi propia comparación lado a lado

Dependiendo del tamaño del blob con el que estés tratando, es posible que no estés dispuesto a recuperar todo el contenido en la memory. En ese caso, blob.ContentStream puede ser útil.

Actualizar

Me faltaba el elenco para blob, para descubrir el rest

FWIW, puede confiar en las expresiones revparse para acceder directamente al Blob . Como resultado, lo siguiente también debería funcionar 😉

 [Fact] public void CanRetrieveTwoVersionsOfTheSameBlob_ReduxEdition() { using (var repo = new Repository(BareTestRepoPath)) { var b1 = repo.Lookup<Blob>("8496071:README"); var b2 = repo.Lookup<Blob>("4a202b3:README"); Assert.NotEqual(b1.ContentAsText(), b2.ContentAsText()); } } 

Esta publicación debe responder a su pregunta, es de otra pregunta aquí en este sitio:

¿Cómo se difiere el mismo file entre dos commits diferentes en la misma twig?

Espero que eso ayude.