Как получить идентификатор фиксации git из приложения С#?

Я изучаю задачу автоматизации сборки CI и хочу назвать свои сборки, используя идентификатор фиксации Git. Я планирую написать программу на С# для этого. Какие библиотеки я могу использовать для вызова репозиториев Git из C#? Я могу вызвать клон локального репозитория и получить эту информацию с помощью git.exe(Windows) или libgit2sharp, но я не знаю, как это сделать на удаленном источнике.


person Pavan Keerthi    schedule 06.06.2013    source источник


Ответы (2)


С точки зрения CI вы можете захотеть создать конкретную ветку.

Следующий фрагмент кода демонстрирует это.

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);
}

Примечание. url может указывать на:

  • удаленный http-адрес (http://www.example.com/repo.git)
  • местоположение на сервере CI (file:///C:/My%20Documents/repo.git)
  • местоположение в сети (file://server/repos/repo.git)
person nulltoken    schedule 07.06.2013

Я использую LibGit2Sharp уже довольно давно, и это хорошо.

Ниже приведен пример, который будет перебирать commits в вашем файле url.

Примечание. Мне пришлось сделать clone, не уверен, что есть лучший способ:

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);
    }
}
person jacob aloysious    schedule 07.06.2013