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