@@ -129,25 +129,51 @@ - (BOOL)mergeAnnotatedCommits:(NSArray <GTAnnotatedCommit *> *)annotatedCommits
129
129
return YES ;
130
130
}
131
131
132
+ - (BOOL )finalizeMergeOfBranch : (GTBranch *)localBranch mergedTree : (GTTree *)mergedTree parents : (NSArray <GTCommit *> *)parents error : (NSError **)error {
133
+
134
+ // Load the message to use
135
+ NSURL *mergeMsgFile = [[self gitDirectoryURL ] URLByAppendingPathComponent: @" MERGE_MSG" ];
136
+ NSString *message = [NSString stringWithContentsOfURL: mergeMsgFile
137
+ encoding: NSUTF8StringEncoding
138
+ error: NULL ];
139
+ if (!message) {
140
+ message = [NSString stringWithFormat: @" Merge branch '%@ '" , localBranch.shortName];
141
+ }
142
+
143
+ // Create the merge commit
144
+ GTCommit *mergeCommit = [self createCommitWithTree: mergedTree message: message parents: parents updatingReferenceNamed: localBranch.reference.name error: error];
145
+ if (!mergeCommit) {
146
+ return NO ;
147
+ }
148
+
149
+ BOOL success = [self cleanupStateWithError: error];
150
+ if (!success) {
151
+ return NO ;
152
+ }
153
+
154
+ success = [self checkoutReference: localBranch.reference options: [GTCheckoutOptions checkoutOptionsWithStrategy: GTCheckoutStrategyForce] error: error];
155
+ return success;
156
+ }
157
+
132
158
- (BOOL )mergeBranchIntoCurrentBranch : (GTBranch *)branch withError : (NSError **)error {
133
159
// Check if merge is necessary
134
160
GTBranch *localBranch = [self currentBranchWithError: error];
135
- if (! localBranch) {
161
+ if (localBranch == nil ) {
136
162
return NO ;
137
163
}
138
164
139
165
GTCommit *localCommit = [localBranch targetCommitWithError: error];
140
- if (! localCommit) {
166
+ if (localCommit == nil ) {
141
167
return NO ;
142
168
}
143
169
144
170
GTCommit *remoteCommit = [branch targetCommitWithError: error];
145
- if (! remoteCommit) {
171
+ if (remoteCommit == nil ) {
146
172
return NO ;
147
173
}
148
174
149
175
GTAnnotatedCommit *remoteAnnotatedCommit = [GTAnnotatedCommit annotatedCommitFromReference: branch.reference error: error];
150
- if (! remoteAnnotatedCommit) {
176
+ if (remoteAnnotatedCommit == nil ) {
151
177
return NO ;
152
178
}
153
179
@@ -176,7 +202,7 @@ - (BOOL)mergeBranchIntoCurrentBranch:(GTBranch *)branch withError:(NSError **)er
176
202
177
203
if (analysis & GTMergeAnalysisFastForward) {
178
204
NSString *message = [NSString stringWithFormat: @" merge %@ : Fast-forward" , branch.name];
179
- GTReference *reference = [localBranch.reference referenceByUpdatingTarget: remoteCommit.SHA message: message error: error];
205
+ GTReference *reference = [localBranch.reference referenceByUpdatingTarget: remoteCommit.OID. SHA message: message error: error];
180
206
BOOL checkoutSuccess = [self checkoutReference: reference options: [GTCheckoutOptions checkoutOptionsWithStrategy: GTCheckoutStrategyForce] error: error];
181
207
return checkoutSuccess;
182
208
}
@@ -222,29 +248,7 @@ - (BOOL)mergeBranchIntoCurrentBranch:(GTBranch *)branch withError:(NSError **)er
222
248
return NO ;
223
249
}
224
250
225
- // Create merge commit
226
- NSError *mergeMsgError = nil ;
227
- NSURL *mergeMsgFile = [[self gitDirectoryURL ] URLByAppendingPathComponent: @" MERGE_MSG" ];
228
- NSString *message = [NSString stringWithContentsOfURL: mergeMsgFile
229
- encoding: NSUTF8StringEncoding
230
- error: &mergeMsgError];
231
- if (!message) {
232
- message = [NSString stringWithFormat: @" Merge branch '%@ '" , localBranch.shortName];
233
- }
234
-
235
- NSArray *parents = @[ localCommit, remoteCommit ];
236
- GTCommit *mergeCommit = [self createCommitWithTree: mergedTree message: message parents: parents updatingReferenceNamed: localBranch.reference.name error: error];
237
- if (!mergeCommit) {
238
- return NO ;
239
- }
240
-
241
- success = [self cleanupStateWithError: error];
242
- if (!success) {
243
- return NO ;
244
- }
245
-
246
- success = [self checkoutReference: localBranch.reference options: [GTCheckoutOptions checkoutOptionsWithStrategy: GTCheckoutStrategyForce] error: error];
247
- return success;
251
+ return [self finalizeMergeOfBranch: localBranch mergedTree: mergedTree parents: @[ localCommit, remoteCommit ] error: error];
248
252
}
249
253
250
254
- (NSString * _Nullable)contentsOfDiffWithAncestor : (GTIndexEntry *)ancestor ourSide : (GTIndexEntry *)ourSide theirSide : (GTIndexEntry *)theirSide error : (NSError **)error {
0 commit comments