如何解决无论分支如何,如何使用 libgit2sharp 获取所有 git 提交?
AFAIK,Repository.Commits 属性返回当前分支可访问的所有提交。
我想获得所有可能的提交,而不管分支。 我正在使用以下命令:
var commitsToRewrite = repository.Branches.SelectMany(x => x.Commits)
.GroupBy(x => x.Sha)
.Select(x => x.First())
.ToArray();
它很慢但似乎有效(也许我错过了一些未涵盖的特殊情况)。 这是正确的做法吗?有没有更高效、更快捷的方法?
解决方法
也许不是你的情况,但在一些罕见的情况下,我发现只有遍历所有分支才能跳过一些提交(可能是分支删除的原因)。这段代码似乎做得更好(希望如此),而且速度更快,内存占用更少。
var commitsToRewrite = repository.Commits.QueryBy(new CommitFilter {IncludeReachableFrom = repository.Refs.ToList()})
.Distinct<Commit>(EqualityComparer<GitObject>.Default)
.ToList();
我用 ReactOS git repo 测试了这个,有超过 85000 次提交和 500Mb。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。