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

Method checkAutoMerge

src/processor/pull.ts:98–139  ·  view source on GitHub ↗
(
    incomingPR: PullRequestData | null,
    config: { isMergeableMaxRetries?: number } = {},
  )

Source from the content-addressed store, hash-verified

96 }
97
98 private async checkAutoMerge(
99 incomingPR: PullRequestData | null,
100 config: { isMergeableMaxRetries?: number } = {},
101 ): Promise<boolean> {
102 if (!incomingPR) return false;
103
104 const prNumber = incomingPR.number;
105 this.logger.debug(
106 `#${prNumber} Checking auto merged pull request`,
107 );
108
109 const rule: PullRule | undefined = this.config.rules.find((r) =>
110 r.base.toLowerCase() === incomingPR.base.ref.toLowerCase() &&
111 (r.upstream.toLowerCase() === incomingPR.head.label.toLowerCase() ||
112 r.upstream.toLowerCase() === incomingPR.head.ref.toLowerCase())
113 );
114
115 if (!rule) {
116 this.logger.debug(
117 `#${prNumber} No rule found`,
118 );
119 return false;
120 }
121
122 if (incomingPR.mergeable === false) {
123 await this.handleMergeConflict(prNumber, rule);
124 return false;
125 }
126
127 if (
128 rule.mergeMethod !== "none" &&
129 incomingPR.state === "open" &&
130 incomingPR.user.login === appConfig.botName
131 ) {
132 return await this.processMerge(prNumber, incomingPR, rule, config);
133 }
134
135 this.logger.debug(
136 `#${prNumber} Skip processing`,
137 );
138 return false;
139 }
140
141 private async handleMergeConflict(
142 prNumber: number,

Callers 1

routineCheckMethod · 0.95

Calls 2

handleMergeConflictMethod · 0.95
processMergeMethod · 0.95

Tested by

no test coverage detected