diff --git a/lib/src/repository.dart b/lib/src/repository.dart index f007cd9..3284da5 100644 --- a/lib/src/repository.dart +++ b/lib/src/repository.dart @@ -1,4 +1,6 @@ import 'dart:ffi'; +import 'package:libgit2dart/libgit2dart.dart'; + import 'bindings/libgit2_bindings.dart'; import 'bindings/repository.dart' as bindings; import 'bindings/merge.dart' as merge_bindings; @@ -329,11 +331,9 @@ class Repository { /// Returns the list of commits starting from provided [oid]. /// /// If [sorting] isn't provided default will be used (reverse chronological order, like in git). - List log(Oid oid, [GitSort sorting = GitSort.none]) { + List log(Oid oid, [List? sorting]) { final walker = RevWalk(this); - if (sorting != GitSort.none) { - walker.sorting(sorting); - } + walker.sorting(sorting ?? [GitSort.none]); walker.push(oid); final result = walker.walk(); walker.free(); diff --git a/lib/src/revwalk.dart b/lib/src/revwalk.dart index 691f095..ecb060f 100644 --- a/lib/src/revwalk.dart +++ b/lib/src/revwalk.dart @@ -36,8 +36,10 @@ class RevWalk { /// Changing the sorting mode resets the walker. /// /// Throws a [LibGit2Error] if error occured. - void sorting(GitSort sorting) => - bindings.sorting(_revWalkPointer, sorting.value); + void sorting(List sorting) { + final sort = sorting.fold(0, (previousValue, e) => e.value); + bindings.sorting(_revWalkPointer, sort); + } /// Adds a new root for the traversal. /// diff --git a/test/revwalk_test.dart b/test/revwalk_test.dart index ddbbbd3..b6833df 100644 --- a/test/revwalk_test.dart +++ b/test/revwalk_test.dart @@ -53,7 +53,7 @@ void main() { final start = Oid.fromSHA(repo, log.first); walker.push(start); - walker.sorting(GitSort.reverse); + walker.sorting([GitSort.reverse]); final commits = walker.walk(); for (var i = 0; i < commits.length; i++) { @@ -77,7 +77,7 @@ void main() { expect(timeSortedCommits[i].id.sha, log[i]); } - walker.sorting(GitSort.reverse); + walker.sorting([GitSort.time, GitSort.reverse]); final reverseSortedCommits = walker.walk(); for (var i = 0; i < reverseSortedCommits.length; i++) { expect(reverseSortedCommits[i].id.sha, log.reversed.toList()[i]);