Libgit2sharp 迭代提交从最新到最旧
Libgit2sharp Iterate commits from newest to oldest
我想遍历存储库的所有变更集。我想避免先读取 ram 中的所有提交然后遍历 then
目前我有这个方法
foreach (LibGit2Sharp.Commit commit in repo.Commits)
{
return Transform(commit);
}
我知道我可以做到:
foreach (LibGit2Sharp.Commit commit in repo.Commits.OrderByDescending(i=>i.Committer.When))
但随后它读取所有提交,然后 linq 对它们重新排序。
有没有办法让libgit2sharp逆序迭代?
您可以创建一个提交 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);
}
我想遍历存储库的所有变更集。我想避免先读取 ram 中的所有提交然后遍历 then
目前我有这个方法
foreach (LibGit2Sharp.Commit commit in repo.Commits)
{
return Transform(commit);
}
我知道我可以做到:
foreach (LibGit2Sharp.Commit commit in repo.Commits.OrderByDescending(i=>i.Committer.When))
但随后它读取所有提交,然后 linq 对它们重新排序。
有没有办法让libgit2sharp逆序迭代?
您可以创建一个提交 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);
}