Libgit2sharp迭代从最新到最旧的提交

时间:2016-09-21 16:03:55

标签: c# linq libgit2sharp

我想遍历存储库的所有变更集。我想避免首先阅读ram中的所有提交,然后迭代

目前,我有这个方法

   foreach (LibGit2Sharp.Commit commit in repo.Commits)
   {
        return Transform(commit);
   }

我知道我可以这样做:

foreach (LibGit2Sharp.Commit commit in repo.Commits.OrderByDescending(i=>i.Committer.When))

然后它会读取所有提交,然后linq重新排序它们。

难道没有办法让libgit2sharp以相反的顺序迭代?

1 个答案:

答案 0 :(得分:3)

您可以创建一个提交Filter并使用它来按以下方式对提交进行排序:

  • Reverse
  • Time
  • Topological

实施例

var repo = new LibGit2Sharp.Repository("/Users/sushi/code/sushi/Xamarin.PlayScript.Starling");
var filter = new CommitFilter()
{
    SortBy = CommitSortStrategies.Reverse 
};
IEnumerable<Commit> commits = repo.Commits.QueryBy(filter);
foreach (var commit in commits)
{
    Console.WriteLine(commit.Committer.When);
}