¿Cómo recuperar git Commit Id de una aplicación C #?

Estoy investigando una tarea de Automatización de compilation de CI y quiero nombrar mis comstackciones usando el ID de compilation de Git. Estoy planeando escribir un progtwig de C # para hacer esto. ¿Qué bibliotecas puedo usar para llamar a los repositorys de Git desde C #? Puedo llamar al clon del repository local y recuperar esta información usando git.exe (Windows) o libgit2sharp, pero no sé cómo hacerlo en una fuente remota

Desde una perspectiva de CI, puede estar dispuesto a build una twig específica.

La siguiente pieza de código demuestra esto.

using (Repository repo = Repository.Clone(url, localPath)) { // Retrieve the branch to build var branchToBuild = repo.Branches["vNext"]; // Updates the content of the working directory with the content of the branch branchToBuild.Checkout(); // Perform your build magic here ;-) Build(); // Retrieve the commit sha of the branch that has just been built string sha = branchToBuild.Tip.Sha; // Package your build artifacts using the sha to name the package Package(sha); } 

Nota: url puede señalar a:

  • una URL http remota ( http://www.example.com/repo.git )
  • una location en el server de CI ( file:///C:/My%20Documents/repo.git )
  • una location en la networking ( file://server/repos/repo.git )

He estado usando LibGit2Sharp durante bastante time, y está bien.

A continuación se muestra una muestra, que se repetirá a través de las commits en su url .

Nota: tuve que hacer un clone , no estoy seguro si hay una mejor manera:

 string url = "http://github.com/libgit2/TestGitRepository"; using (Repository repo = Repository.Clone(url, @"C:\Users\Documents\test")) { foreach (var commit in repo.Commits) { var commitId = commit.Id; var commitRawId = commitId.RawId; var commitSha = commitId.Sha; //0ab936416fa3bec6f1bf3d25001d18a00ee694b8 var commitAuthorName = commit.Author.Name; commits.Add(commit); } }