Ich versuche LibGit2Sharp zu verwenden, um die Funktionalität von git show-brach --independent
neu zu erstellen, welche nach dem docs dies tut: Among the <reference>s given, display only the ones that cannot be reached from any other <reference>.
LibGit2Sharp Implementierung von showbranch unabhängigen
Mein bester Versuch so weit ist die folgende:
List<Commit> GetIndependent(IRepository repo, IEnumerable<Commit> commits)
{
var indep = new List<Commit>();
foreach (var commit in commits)
{
if (repo.Commits.QueryBy(new CommitFilter
{
FirstParentOnly = false,
IncludeReachableFrom = commit,
ExcludeReachableFrom = commits.Where(x => x.Equals(commit) == false)
}).Any())
{
indep.Add(commit);
}
}
return indep;
}
Leider wird dies astronomisch langsam, wenn die Menge der Geschichte zunimmt. Es ist tatsächlich viel schneller für mich, git direkt auszuführen, die Ausgabe zu analysieren und LibGit2Sharp die resultierenden SHAs nachzuschlagen, als den obigen Code zu verwenden. Ich nehme an, das hat mit einer Optimierung zu tun, die Git hat, aber LibGit2 nicht. Macht das überhaupt was ich will? Wenn ja, gibt es einen besseren Weg, dies in LibGit2Sharp zu erreichen?