@@ -36,29 +36,29 @@ extension Merge on GitRepository {
36
36
if (bases.length > 1 ) {
37
37
throw GitMergeTooManyBases ();
38
38
}
39
- if (bases.isEmpty) {
40
- throw GitMergeNoCommonAncestor ();
41
- }
42
- var baseHash = bases.first.hash;
39
+ if (bases.isNotEmpty) {
40
+ var baseHash = bases.first.hash;
43
41
44
- // up to date
45
- if (baseHash == commitB.hash) {
46
- return ;
47
- }
42
+ // up to date
43
+ if (baseHash == commitB.hash) {
44
+ return ;
45
+ }
48
46
49
- // fastforward
50
- if (baseHash == headCommit.hash) {
51
- var branchNameRef = headRef.target;
52
- assert (branchNameRef.isBranch ());
47
+ // fastforward
48
+ if (baseHash == headCommit.hash) {
49
+ var branchNameRef = headRef.target;
50
+ assert (branchNameRef.isBranch ());
53
51
54
- var newRef = HashReference (branchNameRef, commitB.hash);
55
- refStorage.saveRef (newRef);
52
+ var newRef = HashReference (branchNameRef, commitB.hash);
53
+ refStorage.saveRef (newRef);
56
54
57
- checkout ('.' );
58
- return ;
55
+ checkout ('.' );
56
+ return ;
57
+ }
59
58
}
60
59
61
- var baseTree = objStorage.readTree (bases.first.treeHash);
60
+ var baseTree =
61
+ bases.isNotEmpty ? objStorage.readTree (bases.first.treeHash) : null ;
62
62
var headTree = objStorage.readTree (headCommit.treeHash);
63
63
var bTree = objStorage.readTree (commitB.treeHash);
64
64
@@ -79,13 +79,13 @@ extension Merge on GitRepository {
79
79
}
80
80
81
81
/// throws exceptions
82
- GitHash _combineTrees (GitTree a, GitTree b, GitTree base ) {
82
+ GitHash _combineTrees (GitTree a, GitTree b, GitTree ? base ) {
83
83
// Get all the paths
84
84
var names = a.entries.map ((e) => e.name).toSet ();
85
85
names.addAll (b.entries.map ((e) => e.name));
86
86
87
87
var entries = < GitTreeEntry > [];
88
- for (var baseEntry in base .entries) {
88
+ for (var baseEntry in base ? .entries ?? < GitTreeEntry > [] ) {
89
89
var name = baseEntry.name;
90
90
var aIndex = a.entries.indexWhere ((e) => e.name == name);
91
91
var bIndex = b.entries.indexWhere ((e) => e.name == name);
@@ -118,7 +118,8 @@ extension Merge on GitRepository {
118
118
var name = entry.name;
119
119
120
120
// If the entry was already in the base
121
- var baseIndex = base .entries.indexWhere ((e) => e.name == name);
121
+ var baseIndex =
122
+ base == null ? - 1 : base .entries.indexWhere ((e) => e.name == name);
122
123
if (baseIndex != - 1 ) {
123
124
continue ;
124
125
}
0 commit comments