Skip to content

Commit e4e6299

Browse files
committed
pull requests: Remove merge conflict warnings when PR can merge again.
Fixes #102
1 parent ed504c8 commit e4e6299

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

src/automations/checkMergeConflicts.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ exports.check = (client, number, repoName, repoOwner) => {
2222
owner: repoOwner, repo: repoName, number: number
2323
}).then((pull) => {
2424
const mergeable = pull.data.mergeable;
25-
if (mergeable) return;
2625
const author = pull.data.user.login;
2726
const comment = client.templates.get("mergeConflictWarning").replace("[username]", author)
2827
.replace("[repoOwner]", repoOwner).replace("[repoName]", repoName);
29-
const oldComment = "merge conflict";
3028
client.pullRequests.getCommits({
3129
owner: repoOwner, repo: repoName, number: number, per_page: 100
3230
}).then((commits) => {
@@ -36,9 +34,20 @@ exports.check = (client, number, repoName, repoOwner) => {
3634
}).then((comments) => {
3735
const labelComment = comments.data.find((c) => {
3836
const synchCheck = lastCommitTime < Date.parse(c.updated_at);
39-
return c.body.includes(oldComment) && synchCheck && c.user.login === client.cfg.username;
37+
return c.body.includes(comment) && synchCheck && c.user.login === client.cfg.username;
4038
});
41-
if (!labelComment) client.newComment(pull.data, pull.data.base.repo, comment);
39+
if (!labelComment) {
40+
client.newComment(pull.data, pull.data.base.repo, comment);
41+
} else if (mergeable) {
42+
const oldComments = comments.data.filter((c) => {
43+
return c.body.includes(comment) && c.user.login === client.cfg.username;
44+
}).map(c => c.id);
45+
oldComments.forEach((c) => {
46+
client.issues.deleteComment({
47+
owner: repoOwner, repo: repoName, id: c
48+
});
49+
});
50+
}
4251
});
4352
});
4453
});

src/events/pullRequests.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,18 @@ exports.run = (client, payload) => {
2626
client.automations.get("issueReferenced").run(client, pullRequest, repository);
2727
} else if (action === "synchronize") {
2828
client.automations.get("issueReferenced").run(client, pullRequest, repository);
29+
if (client.cfg.checkMergeConflicts) {
30+
client.automations.get("checkMergeConflicts").check(client, number, repoName, repoOwner);
31+
}
2932
}
3033
};
3134

3235
exports.managePRLabels = (client, action, pullRequest, review, repository) => {
3336
const number = pullRequest.number;
3437
const repoName = repository.name;
3538
const repoOwner = repository.owner.login;
36-
client.issues.getIssueLabels({
37-
owner: repoOwner, repo: repoName, number: number
38-
}).then((response) => {
39+
client.issues.getIssueLabels({owner: repoOwner, repo: repoName, number: number})
40+
.then((response) => {
3941
let labels = response.data.map(label => label.name);
4042
const needsReview = labels.includes(client.cfg.needsReviewLabel);
4143
const reviewed = labels.includes(client.cfg.reviewedLabel);

0 commit comments

Comments
 (0)