如何从LibGit2Sharp.Commit解析Branch?

时间:2013-08-17 01:57:33

标签: .net git libgit2sharp

给定LibGit2Sharp.Commit的实例我如何计算

上存在的Branch

1 个答案:

答案 0 :(得分:2)

事实上,这个提交可能存在于许多Branch es。它甚至可以由TagStash指向。

如果想知道导致特定提交的所有引用,.ReachableFrom()方法可能只适合这种需要:

IEnumerable<Reference> refs = repo.Refs.ReachableFrom(new[] { my_commit });

如果您希望将检索到的引用限制为仅限于本地头,则此方法的重载接受要使用的引用子集:

IEnumerable<Reference> localHeadRefs = repo.Refs.ReachableFrom(
    repo.Refs.Where(r => r.IsLocalBranch()),
    new[] { my_commit });

然后,检索Branch es的列表可以这样做:

IEnumerable<Branch> branches = localHeadRefs
    .Select(reference => repo.Branches[reference.CanonicalName]);