From fb69de66d237f439c5359ba9a8cb10f69e775f67 Mon Sep 17 00:00:00 2001 From: Aleksey Kulikov Date: Sat, 4 Sep 2021 12:21:42 +0300 Subject: [PATCH] refactor: pass sha hex string instead of Oid as argument --- lib/src/repository.dart | 17 +++++++++++------ lib/src/tag.dart | 5 +++-- test/repository_test.dart | 10 ++++------ test/revparse_test.dart | 5 ++++- test/tag_test.dart | 7 +++---- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/lib/src/repository.dart b/lib/src/repository.dart index 717dbbe..16d565f 100644 --- a/lib/src/repository.dart +++ b/lib/src/repository.dart @@ -350,14 +350,17 @@ class Repository { } } - /// Returns the list of commits starting from provided [oid]. + /// Returns the list of commits starting from provided [sha] hex string. /// /// If [sorting] isn't provided default will be used (reverse chronological order, like in git). - List log(Oid oid, [List? sorting]) { + List log(String sha, [List? sorting]) { + final oid = Oid.fromSHA(this, sha); final walker = RevWalk(this); + walker.sorting(sorting ?? [GitSort.none]); walker.push(oid); final result = walker.walk(); + walker.free(); return result; @@ -397,11 +400,13 @@ class Repository { /// Finds a merge base between two commits. /// /// Throws a [LibGit2Error] if error occured. - Oid mergeBase(Oid one, Oid two) { + Oid mergeBase(String one, String two) { + final oidOne = Oid.fromSHA(this, one); + final oidTwo = Oid.fromSHA(this, two); return Oid(merge_bindings.mergeBase( _repoPointer, - one.pointer, - two.pointer, + oidOne.pointer, + oidTwo.pointer, )); } @@ -436,7 +441,7 @@ class Repository { /// Throws a [LibGit2Error] if error occured. Oid createTag({ required String tagName, - required Oid target, + required String target, required GitObject targetType, required Signature tagger, required String message, diff --git a/lib/src/tag.dart b/lib/src/tag.dart index c37a9ce..f8bc9ac 100644 --- a/lib/src/tag.dart +++ b/lib/src/tag.dart @@ -48,15 +48,16 @@ class Tag { static Oid create({ required Repository repository, required String tagName, - required Oid target, + required String target, required GitObject targetType, required Signature tagger, required String message, bool force = false, }) { + final targetOid = Oid.fromSHA(repository, target); final object = object_bindings.lookup( repository.pointer, - target.pointer, + targetOid.pointer, targetType.value, ); final result = bindings.create( diff --git a/test/repository_test.dart b/test/repository_test.dart index 4ea886b..e0d2e15 100644 --- a/test/repository_test.dart +++ b/test/repository_test.dart @@ -188,8 +188,7 @@ void main() { '6cbc22e509d72758ab4c8d9f287ea846b90c448b', 'f17d0d48eae3aa08cecf29128a35e310c97b3521', ]; - final start = Oid.fromSHA(repo, lastCommit); - final commits = repo.log(start); + final commits = repo.log(lastCommit); for (var i = 0; i < commits.length; i++) { expect(commits[i].id.sha, log[i]); @@ -305,15 +304,14 @@ void main() { }); }); - test('successfully creates tag with provided Oid', () { + test('successfully creates tag with provided sha', () { final signature = Signature.create( name: 'Author', email: 'author@email.com', time: 1234, ); const tagName = 'tag'; - final target = - Oid.fromSHA(repo, 'f17d0d48eae3aa08cecf29128a35e310c97b3521'); + const target = 'f17d0d48eae3aa08cecf29128a35e310c97b3521'; const message = 'init tag\n'; final oid = Tag.create( @@ -333,7 +331,7 @@ void main() { expect(newTag.name, tagName); expect(newTag.message, message); expect(tagger, signature); - expect(newTagTarget.id, target); + expect(newTagTarget.id.sha, target); newTag.free(); newTagTarget.free(); diff --git a/test/revparse_test.dart b/test/revparse_test.dart index 1b8cad8..d2c386e 100644 --- a/test/revparse_test.dart +++ b/test/revparse_test.dart @@ -99,7 +99,10 @@ void main() { expect(revspec.from.id.sha, headSHA); expect(revspec.to?.id.sha, '5aecfa0fb97eadaac050ccb99f03c3fb65460ad4'); expect(revspec.flags, GitRevParse.mergeBase); - expect(repo.mergeBase(revspec.from.id, revspec.to!.id), isA()); + expect( + repo.mergeBase(revspec.from.id.sha, revspec.to!.id.sha), + isA(), + ); revspec.from.free(); revspec.to?.free(); diff --git a/test/tag_test.dart b/test/tag_test.dart index 9f77567..5751512 100644 --- a/test/tag_test.dart +++ b/test/tag_test.dart @@ -29,7 +29,7 @@ void main() { }); group('Tag', () { - test('successfully initializes tag from provided Oid', () { + test('successfully initializes tag from provided sha', () { expect(tag, isA()); }); @@ -60,8 +60,7 @@ void main() { time: 1234, ); const tagName = 'tag'; - final target = - Oid.fromSHA(repo, 'f17d0d48eae3aa08cecf29128a35e310c97b3521'); + final target = 'f17d0d48eae3aa08cecf29128a35e310c97b3521'; const message = 'init tag\n'; final oid = Tag.create( @@ -81,7 +80,7 @@ void main() { expect(newTag.name, tagName); expect(newTag.message, message); expect(tagger, signature); - expect(newTagTarget.id, target); + expect(newTagTarget.id.sha, target); newTag.free(); newTagTarget.free();