Compare commits

..

No commits in common. "4aea9a306a4f1f2f5d77eb799e412f2916c93112" and "c35d336a56ee76aebea66f2ec21bb8bbdfc5ede3" have entirely different histories.

16 changed files with 108 additions and 79 deletions

View file

@ -1,15 +1,3 @@
## 1.1.0
- feat: add ability to get and set libgit2 global options
- feat: upgrade Flutter version constraints to `>=3.0.0`
- feat: add ability to remove entries in index with `resetDefault(...)` method
- feat: add ability to compare objects (value based equality).
Note: comparison of Repository objects have naive implementation. Comparison is based on repository path, and previously loaded into memory index, odb, etc. might be different. Use with caution.
## 1.0.0
- Initial release.

View file

@ -13,10 +13,10 @@ List<String> list(Pointer<git_repository> repo) {
final out = calloc<git_strarray>();
libgit2.git_remote_list(out, repo);
final result = <String>[
for (var i = 0; i < out.ref.count; i++)
out.ref.strings[i].cast<Utf8>().toDartString()
];
final result = <String>[];
for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
}
calloc.free(out);
@ -162,13 +162,11 @@ List<String> rename({
calloc.free(out);
throw LibGit2Error(libgit2.git_error_last());
} else {
final result = <String>[
for (var i = 0; i < out.ref.count; i++)
out.ref.strings[i].cast<Utf8>().toDartString()
];
final result = <String>[];
for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
}
calloc.free(out);
return result;
}
}
@ -255,13 +253,11 @@ List<String> fetchRefspecs(Pointer<git_remote> remote) {
final out = calloc<git_strarray>();
libgit2.git_remote_get_fetch_refspecs(out, remote);
final result = <String>[
for (var i = 0; i < out.ref.count; i++)
out.ref.strings[i].cast<Utf8>().toDartString()
];
final result = <String>[];
for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
}
calloc.free(out);
return result;
}
@ -270,13 +266,11 @@ List<String> pushRefspecs(Pointer<git_remote> remote) {
final out = calloc<git_strarray>();
libgit2.git_remote_get_push_refspecs(out, remote);
final result = <String>[
for (var i = 0; i < out.ref.count; i++)
out.ref.strings[i].cast<Utf8>().toDartString()
];
final result = <String>[];
for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
}
calloc.free(out);
return result;
}

View file

@ -124,6 +124,7 @@ Pointer<git_repository> clone({
required String localPath,
required bool bare,
RemoteCallback? remoteCallback,
// Repository Function(String, bool)? repository,
RepositoryCallback? repositoryCallback,
String? checkoutBranch,
required Callbacks callbacks,

View file

@ -110,13 +110,11 @@ List<String> list(Pointer<git_repository> repo) {
calloc.free(out);
throw LibGit2Error(libgit2.git_error_last());
} else {
final result = <String>[
for (var i = 0; i < out.ref.count; i++)
out.ref.strings[i].cast<Utf8>().toDartString()
];
final result = <String>[];
for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
}
calloc.free(out);
return result;
}
}

View file

@ -264,11 +264,18 @@ class Commit extends Equatable {
/// List of parent commits [Oid]s.
List<Oid> get parents {
final parents = <Oid>[];
final parentCount = bindings.parentCount(_commitPointer);
return <Oid>[
for (var i = 0; i < parentCount; i++)
Oid(bindings.parentId(commitPointer: _commitPointer, position: i))
];
for (var i = 0; i < parentCount; i++) {
final parentOid = bindings.parentId(
commitPointer: _commitPointer,
position: i,
);
parents.add(Oid(parentOid));
}
return parents;
}
/// Returns the specified parent of the commit at provided 0-based [position].

View file

@ -285,18 +285,28 @@ class Diff extends Equatable {
/// revisions.
List<DiffDelta> get deltas {
final length = bindings.length(_diffPointer);
return <DiffDelta>[
for (var i = 0; i < length; i++)
DiffDelta(bindings.getDeltaByIndex(diffPointer: _diffPointer, index: i))
];
final deltas = <DiffDelta>[];
for (var i = 0; i < length; i++) {
deltas.add(
DiffDelta(
bindings.getDeltaByIndex(
diffPointer: _diffPointer,
index: i,
),
),
);
}
return deltas;
}
/// A List of [Patch]es.
List<Patch> get patches {
final length = bindings.length(_diffPointer);
return <Patch>[
for (var i = 0; i < length; i++) Patch.fromDiff(diff: this, index: i)
];
final patches = <Patch>[];
for (var i = 0; i < length; i++) {
patches.add(Patch.fromDiff(diff: this, index: i));
}
return patches;
}
/// The patch diff text.

View file

@ -237,10 +237,10 @@ class Patch extends Equatable {
);
}
final intHeader = <int>[
for (var i = 0; i < hunkPointer.ref.header_len; i++)
hunkPointer.ref.header[i]
];
final intHeader = <int>[];
for (var i = 0; i < hunkPointer.ref.header_len; i++) {
intHeader.add(hunkPointer.ref.header[i]);
}
hunks.add(
DiffHunk._(

View file

@ -47,13 +47,18 @@ class Rebase {
/// List of operations that are to be applied.
List<RebaseOperation> get operations {
final result = <RebaseOperation>[];
final operationsCount = bindings.operationsCount(_rebasePointer);
return <RebaseOperation>[
for (var i = 0; i < operationsCount; i++)
RebaseOperation._(
bindings.getOperationByIndex(rebase: _rebasePointer, index: i),
)
];
for (var i = 0; i < operationsCount; i++) {
final operation = bindings.getOperationByIndex(
rebase: _rebasePointer,
index: i,
);
result.add(RebaseOperation._(operation));
}
return result;
}
/// Index of the rebase operation that is currently being applied. If the

View file

@ -203,9 +203,14 @@ class Reference extends Equatable {
///
/// Throws an [Exception] if error occured.
Oid get target {
return type == ReferenceType.direct
? Oid(bindings.target(_refPointer))
: Oid(bindings.target(bindings.resolve(_refPointer)));
late final Pointer<git_oid> oidPointer;
if (type == ReferenceType.direct) {
oidPointer = bindings.target(_refPointer);
} else {
oidPointer = bindings.target(bindings.resolve(_refPointer));
}
return Oid(oidPointer);
}
/// Recursively peel reference until object of the specified [type] is found.

View file

@ -211,16 +211,20 @@ class Remote extends Equatable {
final refs = bindings.lsRemotes(_remotePointer);
bindings.disconnect(_remotePointer);
return <RemoteReference>[
for (final ref in refs)
final result = <RemoteReference>[];
for (final ref in refs) {
result.add(
RemoteReference._(
isLocal: ref['local']! as bool,
localId: ref['loid'] as Oid?,
name: ref['name']! as String,
oid: ref['oid']! as Oid,
symRef: ref['symref']! as String,
)
];
),
);
}
return result;
}
/// Downloads new data and updates tips.

View file

@ -22,9 +22,11 @@ class RevParse {
spec: spec,
);
object = Commit(pointers[0].cast<git_commit>());
reference = pointers.length == 2
? Reference(pointers[1].cast<git_reference>())
: null;
if (pointers.length == 2) {
reference = Reference(pointers[1].cast<git_reference>());
} else {
reference = null;
}
}
/// Object found by a revision string.

View file

@ -43,12 +43,14 @@ class Stash extends Equatable {
String? message,
Set<GitStash> flags = const {GitStash.defaults},
}) {
final flagsInt = flags.fold(0, (int acc, e) => acc | e.value);
return Oid(
bindings.save(
repoPointer: repo.pointer,
stasherPointer: stasher.pointer,
message: message,
flags: flags.fold(0, (int acc, e) => acc | e.value),
flags: flagsInt,
),
);
}

View file

@ -208,7 +208,11 @@ class Tag extends Equatable {
/// Tagger (author) of a tag if there is one.
Signature? get tagger {
final sigPointer = bindings.tagger(_tagPointer);
return sigPointer != nullptr ? Signature(sigPointer) : null;
if (sigPointer != nullptr) {
return Signature(sigPointer);
} else {
return null;
}
}
/// Releases memory allocated for tag object.

View file

@ -35,10 +35,19 @@ class Tree extends Equatable {
/// List with tree entries of a tree.
List<TreeEntry> get entries {
final entryCount = bindings.entryCount(_treePointer);
return <TreeEntry>[
for (var i = 0; i < entryCount; i++)
TreeEntry(bindings.getByIndex(treePointer: _treePointer, index: i))
];
final result = <TreeEntry>[];
for (var i = 0; i < entryCount; i++) {
result.add(
TreeEntry(
bindings.getByIndex(
treePointer: _treePointer,
index: i,
),
),
);
}
return result;
}
/// Lookups a tree entry in the tree.

View file

@ -4,7 +4,7 @@
#
Pod::Spec.new do |s|
s.name = 'libgit2dart'
s.version = '1.1.0'
s.version = '1.0.0'
s.summary = 'Dart bindings to libgit2.'
s.description = <<-DESC
Dart bindings to libgit2.

View file

@ -2,7 +2,7 @@ name: libgit2dart
description: Dart bindings to libgit2, provides ability to use libgit2 library in Dart and Flutter.
version: 1.1.0
version: 1.0.0
homepage: https://github.com/SkinnyMind/libgit2dart