MCPcopy Index your code
hub / github.com/wei/pull / processMerge

Method processMerge

src/processor/pull.ts:176–224  ·  view source on GitHub ↗
(
    prNumber: number,
    incomingPR: PullRequestData,
    rule: PullRule,
    config: { isMergeableMaxRetries?: number },
  )

Source from the content-addressed store, hash-verified

174 }
175
176 private async processMerge(
177 prNumber: number,
178 incomingPR: PullRequestData,
179 rule: PullRule,
180 config: { isMergeableMaxRetries?: number },
181 ): Promise<boolean> {
182 const mergeableStatus = await this.getMergeableStatus(
183 prNumber,
184 incomingPR,
185 rule,
186 config,
187 );
188
189 if (!mergeableStatus?.mergeable) return false;
190
191 if (rule.mergeMethod === "hardreset") {
192 try {
193 this.logger.debug(
194 `#${prNumber} Performing hard reset`,
195 );
196 await this.hardResetCommit(incomingPR.base.ref, incomingPR.head.sha);
197 this.logger.info(
198 `#${prNumber} Hard reset successful`,
199 );
200 return true;
201 } catch (err) {
202 this.logger.error(
203 { err },
204 `#${prNumber} Hard reset failed`,
205 );
206 return false;
207 }
208 } else if (rule.mergeMethod === "none") {
209 this.logger.debug(
210 `#${prNumber} Merge method is none, skip merging`,
211 );
212 return true;
213 } else {
214 let mergeMethod = rule.mergeMethod;
215 if (mergeMethod === "rebase" && !mergeableStatus.rebaseable) {
216 mergeMethod = "merge";
217 }
218 await this.mergePR(prNumber, mergeMethod);
219 this.logger.info(
220 `#${prNumber} Auto merged pull request using ${mergeMethod}`,
221 );
222 return true;
223 }
224 }
225
226 private async getMergeableStatus(
227 prNumber: number,

Callers 1

checkAutoMergeMethod · 0.95

Calls 3

getMergeableStatusMethod · 0.95
hardResetCommitMethod · 0.95
mergePRMethod · 0.95

Tested by

no test coverage detected