mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-05 04:39:07 -04:00
feat(revwalk): allow combining sorting types
This commit is contained in:
parent
da3bda077a
commit
f19a34a768
3 changed files with 10 additions and 8 deletions
|
@ -1,4 +1,6 @@
|
||||||
import 'dart:ffi';
|
import 'dart:ffi';
|
||||||
|
import 'package:libgit2dart/libgit2dart.dart';
|
||||||
|
|
||||||
import 'bindings/libgit2_bindings.dart';
|
import 'bindings/libgit2_bindings.dart';
|
||||||
import 'bindings/repository.dart' as bindings;
|
import 'bindings/repository.dart' as bindings;
|
||||||
import 'bindings/merge.dart' as merge_bindings;
|
import 'bindings/merge.dart' as merge_bindings;
|
||||||
|
@ -329,11 +331,9 @@ class Repository {
|
||||||
/// Returns the list of commits starting from provided [oid].
|
/// Returns the list of commits starting from provided [oid].
|
||||||
///
|
///
|
||||||
/// If [sorting] isn't provided default will be used (reverse chronological order, like in git).
|
/// If [sorting] isn't provided default will be used (reverse chronological order, like in git).
|
||||||
List<Commit> log(Oid oid, [GitSort sorting = GitSort.none]) {
|
List<Commit> log(Oid oid, [List<GitSort>? sorting]) {
|
||||||
final walker = RevWalk(this);
|
final walker = RevWalk(this);
|
||||||
if (sorting != GitSort.none) {
|
walker.sorting(sorting ?? [GitSort.none]);
|
||||||
walker.sorting(sorting);
|
|
||||||
}
|
|
||||||
walker.push(oid);
|
walker.push(oid);
|
||||||
final result = walker.walk();
|
final result = walker.walk();
|
||||||
walker.free();
|
walker.free();
|
||||||
|
|
|
@ -36,8 +36,10 @@ class RevWalk {
|
||||||
/// Changing the sorting mode resets the walker.
|
/// Changing the sorting mode resets the walker.
|
||||||
///
|
///
|
||||||
/// Throws a [LibGit2Error] if error occured.
|
/// Throws a [LibGit2Error] if error occured.
|
||||||
void sorting(GitSort sorting) =>
|
void sorting(List<GitSort> sorting) {
|
||||||
bindings.sorting(_revWalkPointer, sorting.value);
|
final sort = sorting.fold(0, (previousValue, e) => e.value);
|
||||||
|
bindings.sorting(_revWalkPointer, sort);
|
||||||
|
}
|
||||||
|
|
||||||
/// Adds a new root for the traversal.
|
/// Adds a new root for the traversal.
|
||||||
///
|
///
|
||||||
|
|
|
@ -53,7 +53,7 @@ void main() {
|
||||||
final start = Oid.fromSHA(repo, log.first);
|
final start = Oid.fromSHA(repo, log.first);
|
||||||
|
|
||||||
walker.push(start);
|
walker.push(start);
|
||||||
walker.sorting(GitSort.reverse);
|
walker.sorting([GitSort.reverse]);
|
||||||
final commits = walker.walk();
|
final commits = walker.walk();
|
||||||
|
|
||||||
for (var i = 0; i < commits.length; i++) {
|
for (var i = 0; i < commits.length; i++) {
|
||||||
|
@ -77,7 +77,7 @@ void main() {
|
||||||
expect(timeSortedCommits[i].id.sha, log[i]);
|
expect(timeSortedCommits[i].id.sha, log[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
walker.sorting(GitSort.reverse);
|
walker.sorting([GitSort.time, GitSort.reverse]);
|
||||||
final reverseSortedCommits = walker.walk();
|
final reverseSortedCommits = walker.walk();
|
||||||
for (var i = 0; i < reverseSortedCommits.length; i++) {
|
for (var i = 0; i < reverseSortedCommits.length; i++) {
|
||||||
expect(reverseSortedCommits[i].id.sha, log.reversed.toList()[i]);
|
expect(reverseSortedCommits[i].id.sha, log.reversed.toList()[i]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue