使用LibGit2Sharp循环遍历Git存储库中的每个提交?

时间:2012-05-06 13:21:35

标签: c# git libgit2 libgit2sharp

我试过循环遍历new LibGit2Sharp.Repository(path).Commits,但它似乎只是通过主人的提交(或者我猜想HEAD指向哪里?)。

我如何遍历存储库中的每个提交,无论它在哪个分支中,并按提交发生的时间(日期)顺序循环它们?

我这样做是为了git log之类的目的,按日期顺序列出提交而不管分支。

如果我还可以遍历未引用的提交(例如,如果你git reset远离某些提交并且提交不再被引用并且即将获得gc'd),那么

奖励积分。

思想?

1 个答案:

答案 0 :(得分:2)

使用以下语法

可以实现对git log --all的支持
using (var repo = new Repository(yourRepoPath))
{
      var commits = repo.Commits.QueryBy(new Filter { Since = repo.Refs });
}

Filter还会公开SortBy属性以控制结果的排序。默认排序(GitSortOptions.Time)将首先输出最近的提交。

  如果我还可以遍历未引用的提交

,那么

奖励积分

无法访问reflog中的提交,也无法访问悬空提交(但是?)。然后,没有奖励积分,我猜: - )