Мне нужно получить список коммитов без автоматически объединенных коммитов, сделанных Git. Как это можно сделать с помощью пакета libgit2sharp?
Как игнорировать коммиты слияния с помощью libgit2sharp?
Ответы (1)
Коммит слияния — это коммит с более чем одним родителем.
Чтобы сделать это с помощью Git, можно было бы выполнить, например, следующую команду, в которой будут перечислены все коммиты, доступные HEAD, которые не являются коммитами слияния.
git log --no-merges HEAD
Где --no-merges
задокументировано как "Не печатать фиксирует более чем одного родителя. Это точно так же, как --max-parents=1.".
То же самое можно сделать с LibGit2Sharp с помощью следующего фрагмента кода:
using (var repo = new Repository(path))
{
var allCommitsReachableByHead = repo.Commits;
const string RFC2822Format = "ddd dd MMM HH:mm:ss yyyy K";
foreach (var c in allCommitsReachableByHead)
{
if (c.Parents.Count() > 1)
{
continue;
}
Console.WriteLine("Author: {0} <{1}>", c.Author.Name, c.Author.Email);
Console.WriteLine("Date: {0}", c.Author.When.ToString(RFC2822Format, CultureInfo.InvariantCulture));
Console.WriteLine();
Console.WriteLine(c.Message);
Console.WriteLine();
}
}
person
nulltoken
schedule
03.09.2014