3

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

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

我这样做的目的是git log为了按日期顺序列出不考虑分支的提交。

如果我还可以循环遍历未引用的提交(即,如果您git reset远离某些提交并且这些提交不再被引用并且即将获得 gc'd),则可以加分。

想法?

4

1 回答 1

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 中的提交,也无法访问悬空的提交(还没有?)。然后,我想没有奖励积分:-)

于 2012-05-06T14:26:07.537 回答