diff --git a/runbot_merge/models/batch.py b/runbot_merge/models/batch.py index 494ded57..5e7dbbfb 100644 --- a/runbot_merge/models/batch.py +++ b/runbot_merge/models/batch.py @@ -1,10 +1,8 @@ from __future__ import annotations -import base64 -import contextlib import logging -import os import re +import secrets from collections import defaultdict from collections.abc import Iterator @@ -323,9 +321,7 @@ class Batch(models.Model): new_branch = '%s-%s-%s-fw' % ( target.name, base.refname, - # avoid collisions between fp branches (labels can be reused - # or conflict especially as we're chopping off the owner) - base64.urlsafe_b64encode(os.urandom(3)).decode() + secrets.token_urlsafe(3), ) conflicts = {} for pr in prs: @@ -352,11 +348,11 @@ class Batch(models.Model): for p in root | source ) - title, body = re.match(r'(?P[^\n]+)\n*(?P<body>.*)', message, flags=re.DOTALL).groups() + title, body = re.fullmatch(r'(?P<title>[^\n]+)\n*(?P<body>.*)', message, flags=re.DOTALL).groups() r = gh.post(f'https://api.github.com/repos/{pr.repository.name}/pulls', json={ 'base': target.name, 'head': f'{owner}:{new_branch}', - 'title': '[FW]' + (' ' if title[0] != '[' else '') + title, + 'title': '[FW]' + ('' if title[0] == '[' else ' ') + title, 'body': body }) if not r.ok: