Resolve "Clean up merge request branches that failed to be deleted"
What does this MR do and why?
Originally we had an issue where branches weren't being deleted after being merged, when they should have been. This impacted repo's that used merge trains, but didn't impact every merge request.
This rake task is designed to clean up those branches missed.
In this issue #385097 (closed), we discuss deleting
One batch for the query:
https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/17617/commands/58825
To Test:
- Run a DRY RUN with a valid project id
bundle exec rake gitlab:cleanup:remove_missed_source_branches PROJECT_ID=X USER_ID=1 DRY_RUN=true
- If it returns no merge requests add some by:
- Starts rails console
bundle exec rails c
- Choose a project with merged MR's
project = Project.find(X)
- Load the mrs
mrs = MergeRequest.merged.where(project: project).where( "merge_params LIKE '%force_remove_source_branch: ''1''%' OR merge_params LIKE '%should_remove_source_branch: ''1''%'")
- Create branches for the merged mrs
mrs.first(10).each { |mr| mr.source_project.repository.create_branch(mr.source_branch, mr.diff_head_sha) }
- Starts rails console
- Run a DRY RUN with a valid project id
bundle exec rake gitlab:cleanup:remove_missed_source_branches PROJECT_ID=X USER_ID=1 DRY_RUN=true
- Run again but not dry run
bundle exec rake gitlab:cleanup:remove_missed_source_branches PROJECT_ID=X USER_ID=1 DRY_RUN=false
- Run a DRY RUN again and ensure it is empty
Edited by Marc Shaw