refactor(merge)!: add MergeAnalysis class containing analysis result and merge preference (#49)

BREAKING CHANGE: Return value of Merge.analysis(...) changed from List<Object> to MergeAnalysis.
This commit is contained in:
Aleksey Kulikov 2022-04-28 18:00:18 +03:00 committed by GitHub
parent 9d61584165
commit 6d1ccd5c12
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 21 deletions

View file

@ -46,11 +46,10 @@ class Merge {
/// opportunities for merging them into [ourRef] reference (default is
/// 'HEAD').
///
/// Returns list with analysis result and preference for fast forward merge
/// values respectively.
/// Returns analysis result and preference for fast forward merge.
///
/// Throws a [LibGit2Error] if error occured.
static List<Object> analysis({
static MergeAnalysis analysis({
required Repository repo,
required Oid theirHead,
String ourRef = 'HEAD',
@ -67,14 +66,14 @@ class Merge {
theirHeadsLen: 1,
);
final analysisSet = GitMergeAnalysis.values
final result = GitMergeAnalysis.values
.where((e) => analysisInt[0] & e.value == e.value)
.toSet();
final mergePreference = GitMergePreference.values.singleWhere(
final preference = GitMergePreference.values.singleWhere(
(e) => analysisInt[1] == e.value,
);
return <Object>[analysisSet, mergePreference];
return MergeAnalysis._(result: result, mergePreference: preference);
}
/// Merges the given [commit] into HEAD, writing the results into the
@ -296,3 +295,13 @@ class Merge {
);
}
}
class MergeAnalysis {
const MergeAnalysis._({required this.result, required this.mergePreference});
/// Merge opportunities.
final Set<GitMergeAnalysis> result;
/// The user's stated preference for merges.
final GitMergePreference mergePreference;
}