Late last year, enabled Gitlab-based merge requests for all projects. Instead of the typical patch-based workflow, each issue can have its own fork, with any number of branches and merge requests (MRs).

Because each issue’s branches live in a different fork, this leads to many, many git remotes in your local repo. Over time, as those MRs are merged or closed, there’s not a straightforward way to close them all.

Of course, I decided to address this with a script (similar to the previous post, this requires jq).

At first I wrote a script that directly checked for any of the fixed/closed statuses, and ran git remote remove for each of them. But that was rather scary. My next iteration instead printed out the git remote remove command for each fork.

But as I looked at it more, I decided it would be nice to simply print out all the remotes, grouped by their status. This way you can make your own decisions on what to do with the leftover ones:

$ git remote-status
Needs work:
Needs review:

As always, any improvements are welcome!