mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-08 05:49:08 -04:00
Compare commits
No commits in common. "4aea9a306a4f1f2f5d77eb799e412f2916c93112" and "c35d336a56ee76aebea66f2ec21bb8bbdfc5ede3" have entirely different histories.
4aea9a306a
...
c35d336a56
16 changed files with 108 additions and 79 deletions
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -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
|
## 1.0.0
|
||||||
|
|
||||||
- Initial release.
|
- Initial release.
|
||||||
|
|
|
@ -13,10 +13,10 @@ List<String> list(Pointer<git_repository> repo) {
|
||||||
final out = calloc<git_strarray>();
|
final out = calloc<git_strarray>();
|
||||||
libgit2.git_remote_list(out, repo);
|
libgit2.git_remote_list(out, repo);
|
||||||
|
|
||||||
final result = <String>[
|
final result = <String>[];
|
||||||
for (var i = 0; i < out.ref.count; i++)
|
for (var i = 0; i < out.ref.count; i++) {
|
||||||
out.ref.strings[i].cast<Utf8>().toDartString()
|
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
|
||||||
];
|
}
|
||||||
|
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
|
|
||||||
|
@ -162,13 +162,11 @@ List<String> rename({
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
throw LibGit2Error(libgit2.git_error_last());
|
throw LibGit2Error(libgit2.git_error_last());
|
||||||
} else {
|
} else {
|
||||||
final result = <String>[
|
final result = <String>[];
|
||||||
for (var i = 0; i < out.ref.count; i++)
|
for (var i = 0; i < out.ref.count; i++) {
|
||||||
out.ref.strings[i].cast<Utf8>().toDartString()
|
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
|
||||||
];
|
}
|
||||||
|
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -255,13 +253,11 @@ List<String> fetchRefspecs(Pointer<git_remote> remote) {
|
||||||
final out = calloc<git_strarray>();
|
final out = calloc<git_strarray>();
|
||||||
libgit2.git_remote_get_fetch_refspecs(out, remote);
|
libgit2.git_remote_get_fetch_refspecs(out, remote);
|
||||||
|
|
||||||
final result = <String>[
|
final result = <String>[];
|
||||||
for (var i = 0; i < out.ref.count; i++)
|
for (var i = 0; i < out.ref.count; i++) {
|
||||||
out.ref.strings[i].cast<Utf8>().toDartString()
|
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
|
||||||
];
|
}
|
||||||
|
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,13 +266,11 @@ List<String> pushRefspecs(Pointer<git_remote> remote) {
|
||||||
final out = calloc<git_strarray>();
|
final out = calloc<git_strarray>();
|
||||||
libgit2.git_remote_get_push_refspecs(out, remote);
|
libgit2.git_remote_get_push_refspecs(out, remote);
|
||||||
|
|
||||||
final result = <String>[
|
final result = <String>[];
|
||||||
for (var i = 0; i < out.ref.count; i++)
|
for (var i = 0; i < out.ref.count; i++) {
|
||||||
out.ref.strings[i].cast<Utf8>().toDartString()
|
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
|
||||||
];
|
}
|
||||||
|
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,6 +124,7 @@ Pointer<git_repository> clone({
|
||||||
required String localPath,
|
required String localPath,
|
||||||
required bool bare,
|
required bool bare,
|
||||||
RemoteCallback? remoteCallback,
|
RemoteCallback? remoteCallback,
|
||||||
|
// Repository Function(String, bool)? repository,
|
||||||
RepositoryCallback? repositoryCallback,
|
RepositoryCallback? repositoryCallback,
|
||||||
String? checkoutBranch,
|
String? checkoutBranch,
|
||||||
required Callbacks callbacks,
|
required Callbacks callbacks,
|
||||||
|
|
|
@ -110,13 +110,11 @@ List<String> list(Pointer<git_repository> repo) {
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
throw LibGit2Error(libgit2.git_error_last());
|
throw LibGit2Error(libgit2.git_error_last());
|
||||||
} else {
|
} else {
|
||||||
final result = <String>[
|
final result = <String>[];
|
||||||
for (var i = 0; i < out.ref.count; i++)
|
for (var i = 0; i < out.ref.count; i++) {
|
||||||
out.ref.strings[i].cast<Utf8>().toDartString()
|
result.add(out.ref.strings[i].cast<Utf8>().toDartString());
|
||||||
];
|
}
|
||||||
|
|
||||||
calloc.free(out);
|
calloc.free(out);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -264,11 +264,18 @@ class Commit extends Equatable {
|
||||||
|
|
||||||
/// List of parent commits [Oid]s.
|
/// List of parent commits [Oid]s.
|
||||||
List<Oid> get parents {
|
List<Oid> get parents {
|
||||||
|
final parents = <Oid>[];
|
||||||
final parentCount = bindings.parentCount(_commitPointer);
|
final parentCount = bindings.parentCount(_commitPointer);
|
||||||
return <Oid>[
|
|
||||||
for (var i = 0; i < parentCount; i++)
|
for (var i = 0; i < parentCount; i++) {
|
||||||
Oid(bindings.parentId(commitPointer: _commitPointer, position: 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].
|
/// Returns the specified parent of the commit at provided 0-based [position].
|
||||||
|
|
|
@ -285,18 +285,28 @@ class Diff extends Equatable {
|
||||||
/// revisions.
|
/// revisions.
|
||||||
List<DiffDelta> get deltas {
|
List<DiffDelta> get deltas {
|
||||||
final length = bindings.length(_diffPointer);
|
final length = bindings.length(_diffPointer);
|
||||||
return <DiffDelta>[
|
final deltas = <DiffDelta>[];
|
||||||
for (var i = 0; i < length; i++)
|
for (var i = 0; i < length; i++) {
|
||||||
DiffDelta(bindings.getDeltaByIndex(diffPointer: _diffPointer, index: i))
|
deltas.add(
|
||||||
];
|
DiffDelta(
|
||||||
|
bindings.getDeltaByIndex(
|
||||||
|
diffPointer: _diffPointer,
|
||||||
|
index: i,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return deltas;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A List of [Patch]es.
|
/// A List of [Patch]es.
|
||||||
List<Patch> get patches {
|
List<Patch> get patches {
|
||||||
final length = bindings.length(_diffPointer);
|
final length = bindings.length(_diffPointer);
|
||||||
return <Patch>[
|
final patches = <Patch>[];
|
||||||
for (var i = 0; i < length; i++) Patch.fromDiff(diff: this, index: i)
|
for (var i = 0; i < length; i++) {
|
||||||
];
|
patches.add(Patch.fromDiff(diff: this, index: i));
|
||||||
|
}
|
||||||
|
return patches;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The patch diff text.
|
/// The patch diff text.
|
||||||
|
|
|
@ -237,10 +237,10 @@ class Patch extends Equatable {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final intHeader = <int>[
|
final intHeader = <int>[];
|
||||||
for (var i = 0; i < hunkPointer.ref.header_len; i++)
|
for (var i = 0; i < hunkPointer.ref.header_len; i++) {
|
||||||
hunkPointer.ref.header[i]
|
intHeader.add(hunkPointer.ref.header[i]);
|
||||||
];
|
}
|
||||||
|
|
||||||
hunks.add(
|
hunks.add(
|
||||||
DiffHunk._(
|
DiffHunk._(
|
||||||
|
|
|
@ -47,13 +47,18 @@ class Rebase {
|
||||||
|
|
||||||
/// List of operations that are to be applied.
|
/// List of operations that are to be applied.
|
||||||
List<RebaseOperation> get operations {
|
List<RebaseOperation> get operations {
|
||||||
|
final result = <RebaseOperation>[];
|
||||||
final operationsCount = bindings.operationsCount(_rebasePointer);
|
final operationsCount = bindings.operationsCount(_rebasePointer);
|
||||||
return <RebaseOperation>[
|
|
||||||
for (var i = 0; i < operationsCount; i++)
|
for (var i = 0; i < operationsCount; i++) {
|
||||||
RebaseOperation._(
|
final operation = bindings.getOperationByIndex(
|
||||||
bindings.getOperationByIndex(rebase: _rebasePointer, index: i),
|
rebase: _rebasePointer,
|
||||||
)
|
index: i,
|
||||||
];
|
);
|
||||||
|
result.add(RebaseOperation._(operation));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Index of the rebase operation that is currently being applied. If the
|
/// Index of the rebase operation that is currently being applied. If the
|
||||||
|
|
|
@ -203,9 +203,14 @@ class Reference extends Equatable {
|
||||||
///
|
///
|
||||||
/// Throws an [Exception] if error occured.
|
/// Throws an [Exception] if error occured.
|
||||||
Oid get target {
|
Oid get target {
|
||||||
return type == ReferenceType.direct
|
late final Pointer<git_oid> oidPointer;
|
||||||
? Oid(bindings.target(_refPointer))
|
|
||||||
: Oid(bindings.target(bindings.resolve(_refPointer)));
|
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.
|
/// Recursively peel reference until object of the specified [type] is found.
|
||||||
|
|
|
@ -211,16 +211,20 @@ class Remote extends Equatable {
|
||||||
final refs = bindings.lsRemotes(_remotePointer);
|
final refs = bindings.lsRemotes(_remotePointer);
|
||||||
bindings.disconnect(_remotePointer);
|
bindings.disconnect(_remotePointer);
|
||||||
|
|
||||||
return <RemoteReference>[
|
final result = <RemoteReference>[];
|
||||||
for (final ref in refs)
|
for (final ref in refs) {
|
||||||
|
result.add(
|
||||||
RemoteReference._(
|
RemoteReference._(
|
||||||
isLocal: ref['local']! as bool,
|
isLocal: ref['local']! as bool,
|
||||||
localId: ref['loid'] as Oid?,
|
localId: ref['loid'] as Oid?,
|
||||||
name: ref['name']! as String,
|
name: ref['name']! as String,
|
||||||
oid: ref['oid']! as Oid,
|
oid: ref['oid']! as Oid,
|
||||||
symRef: ref['symref']! as String,
|
symRef: ref['symref']! as String,
|
||||||
)
|
),
|
||||||
];
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Downloads new data and updates tips.
|
/// Downloads new data and updates tips.
|
||||||
|
|
|
@ -22,9 +22,11 @@ class RevParse {
|
||||||
spec: spec,
|
spec: spec,
|
||||||
);
|
);
|
||||||
object = Commit(pointers[0].cast<git_commit>());
|
object = Commit(pointers[0].cast<git_commit>());
|
||||||
reference = pointers.length == 2
|
if (pointers.length == 2) {
|
||||||
? Reference(pointers[1].cast<git_reference>())
|
reference = Reference(pointers[1].cast<git_reference>());
|
||||||
: null;
|
} else {
|
||||||
|
reference = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Object found by a revision string.
|
/// Object found by a revision string.
|
||||||
|
|
|
@ -43,12 +43,14 @@ class Stash extends Equatable {
|
||||||
String? message,
|
String? message,
|
||||||
Set<GitStash> flags = const {GitStash.defaults},
|
Set<GitStash> flags = const {GitStash.defaults},
|
||||||
}) {
|
}) {
|
||||||
|
final flagsInt = flags.fold(0, (int acc, e) => acc | e.value);
|
||||||
|
|
||||||
return Oid(
|
return Oid(
|
||||||
bindings.save(
|
bindings.save(
|
||||||
repoPointer: repo.pointer,
|
repoPointer: repo.pointer,
|
||||||
stasherPointer: stasher.pointer,
|
stasherPointer: stasher.pointer,
|
||||||
message: message,
|
message: message,
|
||||||
flags: flags.fold(0, (int acc, e) => acc | e.value),
|
flags: flagsInt,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,7 +208,11 @@ class Tag extends Equatable {
|
||||||
/// Tagger (author) of a tag if there is one.
|
/// Tagger (author) of a tag if there is one.
|
||||||
Signature? get tagger {
|
Signature? get tagger {
|
||||||
final sigPointer = bindings.tagger(_tagPointer);
|
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.
|
/// Releases memory allocated for tag object.
|
||||||
|
|
|
@ -35,10 +35,19 @@ class Tree extends Equatable {
|
||||||
/// List with tree entries of a tree.
|
/// List with tree entries of a tree.
|
||||||
List<TreeEntry> get entries {
|
List<TreeEntry> get entries {
|
||||||
final entryCount = bindings.entryCount(_treePointer);
|
final entryCount = bindings.entryCount(_treePointer);
|
||||||
return <TreeEntry>[
|
final result = <TreeEntry>[];
|
||||||
for (var i = 0; i < entryCount; i++)
|
for (var i = 0; i < entryCount; i++) {
|
||||||
TreeEntry(bindings.getByIndex(treePointer: _treePointer, index: i))
|
result.add(
|
||||||
];
|
TreeEntry(
|
||||||
|
bindings.getByIndex(
|
||||||
|
treePointer: _treePointer,
|
||||||
|
index: i,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Lookups a tree entry in the tree.
|
/// Lookups a tree entry in the tree.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = 'libgit2dart'
|
s.name = 'libgit2dart'
|
||||||
s.version = '1.1.0'
|
s.version = '1.0.0'
|
||||||
s.summary = 'Dart bindings to libgit2.'
|
s.summary = 'Dart bindings to libgit2.'
|
||||||
s.description = <<-DESC
|
s.description = <<-DESC
|
||||||
Dart bindings to libgit2.
|
Dart bindings to libgit2.
|
||||||
|
|
|
@ -2,7 +2,7 @@ name: libgit2dart
|
||||||
|
|
||||||
description: Dart bindings to libgit2, provides ability to use libgit2 library in Dart and Flutter.
|
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
|
homepage: https://github.com/SkinnyMind/libgit2dart
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue