1

给定一个实例,LibGit2Sharp.Commit我如何计算出Branch存在的内容

4

1 回答 1

2

其实这个Commit可能存在很多Branches上。它甚至可以被Tags 或. 指向Stash

如果想知道导致特定提交的所有引用,则该.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]);
于 2013-08-17T09:54:20.473 回答