refactor(repository)!: move descendantOf() method into Commit (#43)

This commit is contained in:
Aleksey Kulikov 2022-01-26 11:27:35 +03:00 committed by GitHub
parent 9918ab0905
commit bad5e20581
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 47 deletions

View file

@ -2,15 +2,12 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'package:libgit2dart/src/error.dart';
import 'package:libgit2dart/src/util.dart';
/// Determine if a commit is the descendant of another commit.
///
/// Note that a commit is not considered a descendant of itself, in contrast to
/// `git merge-base --is-ancestor`.
///
/// Throws a [LibGit2Error] if error occured.
bool descendantOf({
required Pointer<git_repository> repoPointer,
required Pointer<git_oid> commitPointer,
@ -22,11 +19,7 @@ bool descendantOf({
ancestorPointer,
);
if (result < 0) {
throw LibGit2Error(libgit2.git_error_last());
} else {
return result == 1 || false;
}
return result == 1 || false;
}
/// Count the number of unique commits between two commit objects.

View file

@ -2,6 +2,7 @@ import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/commit.dart' as bindings;
import 'package:libgit2dart/src/bindings/graph.dart' as graph_bindings;
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
class Commit {
@ -309,6 +310,18 @@ class Commit {
return Commit(bindings.nthGenAncestor(commitPointer: _commitPointer, n: n));
}
/// Checks if commit is the descendant of another [ancestor] commit.
///
/// Note that a commit is not considered a descendant of itself, in contrast
/// to `git merge-base --is-ancestor`.
bool descendantOf(Commit ancestor) {
return graph_bindings.descendantOf(
repoPointer: bindings.owner(_commitPointer),
commitPointer: bindings.id(_commitPointer),
ancestorPointer: bindings.id(ancestor.pointer),
);
}
/// Creates an in-memory copy of a commit.
///
/// **IMPORTANT**: Should be freed to release allocated memory.

View file

@ -617,21 +617,6 @@ class Repository {
);
}
/// Checks if a provided [commit] is the descendant of another [ancestor]
/// commit.
///
/// Note that a commit is not considered a descendant of itself, in contrast
/// to `git merge-base --is-ancestor`.
///
/// Throws a [LibGit2Error] if error occured.
bool descendantOf({required Oid commit, required Oid ancestor}) {
return graph_bindings.descendantOf(
repoPointer: _repoPointer,
commitPointer: commit.pointer,
ancestorPointer: ancestor.pointer,
);
}
/// Returns list with the `ahead` and `behind` number of unique commits
/// respectively.
///