Skip to content

Commit ecbaa62

Browse files
authored
new option: SQUASH_MERGE_REQUEST (#22)
1 parent 013eed6 commit ecbaa62

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ GITLAB_AUTH_TOKEN="<token>" yarn run start
4949
| `GITLAB_AUTH_TOKEN` | | `required` Your GitLab token |
5050
| `CI_CHECK_INTERVAL` | `10` | Time between CI checks (in seconds) |
5151
| `MR_CHECK_INTERVAL` | `20` | Time between merge-requests checks (in seconds) |
52-
| `REMOVE_BRANCH_AFTER_MERGE` | `true` | It marks MR to be removed after merge |
52+
| `REMOVE_BRANCH_AFTER_MERGE` | `true` | It'll remove branch after merge |
53+
| `SQUASH_MERGE_REQUEST` | `true` | It'll squash commits on merge |

src/MergeRequestAcceptor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ type AcceptMergeRequestResult = SuccessResponse
6868

6969
interface AcceptMergeRequestOptions {
7070
ciInterval: number;
71+
removeBranchAfterMerge: boolean;
72+
squashMergeRequest: boolean;
7173
}
7274

7375
export enum BotLabels {
@@ -211,10 +213,12 @@ export const acceptMergeRequest = async (gitlabApi: GitlabApi, mergeRequest: Mer
211213

212214
console.log('[MR] Calling merge request');
213215
const response = await gitlabApi.sendRawRequest(`/api/v4/projects/${mergeRequest.project_id}/merge_requests/${mergeRequest.iid}/merge`, RequestMethod.Put, {
214-
should_remove_source_branch: true,
216+
should_remove_source_branch: options.removeBranchAfterMerge,
215217
merge_when_pipeline_succeeds: true,
216218
sha: mergeRequestInfo.diff_refs.head_sha,
219+
squash: options.squashMergeRequest,
217220
squash_commit_message: `${mergeRequest.title} (!${mergeRequest.iid})`,
221+
merge_commit_message: `${mergeRequest.title} (!${mergeRequest.iid})`,
218222
});
219223

220224
if (response.status === 405) { // cannot be merged

src/index.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const GITLAB_AUTH_TOKEN = env.get('GITLAB_AUTH_TOKEN').required().asString();
1717
const CI_CHECK_INTERVAL = env.get('CI_CHECK_INTERVAL', '10').asIntPositive() * 1000;
1818
const MR_CHECK_INTERVAL = env.get('MR_CHECK_INTERVAL', '20').asIntPositive() * 1000;
1919
const REMOVE_BRANCH_AFTER_MERGE = env.get('REMOVE_BRANCH_AFTER_MERGE', 'true').asBoolStrict();
20+
const SQUASH_MERGE_REQUEST = env.get('SQUASH_MERGE_REQUEST', 'true').asBoolStrict();
2021

2122
const gitlabApi = new GitlabApi(GITLAB_URL, GITLAB_AUTH_TOKEN);
2223
const worker = new Worker();
@@ -25,14 +26,6 @@ const runMergeRequestCheckerLoop = async (user: User) => {
2526
console.log('[bot] Checking assigned merge requests');
2627
const assignedMergeRequests = await gitlabApi.getAssignedOpenedMergeRequests();
2728
const possibleToAcceptMergeRequests = assignedMergeRequests.map(async (mergeRequest: MergeRequest) => {
28-
if (REMOVE_BRANCH_AFTER_MERGE && !mergeRequest.force_remove_source_branch) {
29-
console.log(`[MR] Marking MR to be squashed and branch removed after merge`);
30-
await gitlabApi.updateMergeRequest(mergeRequest.project_id, mergeRequest.iid, {
31-
remove_source_branch: true,
32-
squash: true,
33-
});
34-
}
35-
3629
if (mergeRequest.merge_status !== MergeStatus.CanBeMerged) {
3730
console.log(`[MR] Branch cannot be merged. Probably it needs rebase to target branch, assigning back`);
3831

@@ -92,6 +85,8 @@ const runMergeRequestCheckerLoop = async (user: User) => {
9285
jobId,
9386
() => acceptMergeRequest(gitlabApi, mergeRequest, user, {
9487
ciInterval: CI_CHECK_INTERVAL,
88+
removeBranchAfterMerge: REMOVE_BRANCH_AFTER_MERGE,
89+
squashMergeRequest: SQUASH_MERGE_REQUEST,
9590
}),
9691
);
9792

0 commit comments

Comments
 (0)