diff --git a/runbot/models/branch.py b/runbot/models/branch.py
index 94e89049..977300b6 100644
--- a/runbot/models/branch.py
+++ b/runbot/models/branch.py
@@ -61,13 +61,17 @@ class Branch(models.Model):
if branch.is_pr:
_, name = branch.pull_head_name.split(':')
if branch.pull_head_remote_id:
- branch.reference_name = name
+ reference_name = name
else:
- branch.reference_name = branch.pull_head_name # repo is not known, not in repo list must be an external pr, so use complete label
+ reference_name = branch.pull_head_name # repo is not known, not in repo list must be an external pr, so use complete label
#if ':patch-' in branch.pull_head_name:
# branch.reference_name = '%s~%s' % (branch.pull_head_name, branch.name)
else:
- branch.reference_name = branch.name
+ reference_name = branch.name
+ forced_version = branch.remote_id.repo_id.single_version # we don't add a depend on repo.single_version to avoid mass recompute of existing branches
+ if forced_version and not reference_name.startswith(f'{forced_version.name}-'):
+ reference_name = f'{forced_version.name}---{reference_name}'
+ branch.reference_name = reference_name
@api.depends('name')
def _compute_branch_infos(self, pull_info=None):
diff --git a/runbot/models/repo.py b/runbot/models/repo.py
index a7039241..41f130e7 100644
--- a/runbot/models/repo.py
+++ b/runbot/models/repo.py
@@ -242,6 +242,7 @@ class Repo(models.Model):
last_processed_hook_time = fields.Float('Last processed hook time')
get_ref_time = fields.Float('Last refs db update', compute='_compute_get_ref_time')
trigger_ids = fields.Many2many('runbot.trigger', relation='runbot_trigger_triggers', readonly=True)
+ single_version = fields.Many2one('runbot.version', "Single version", help="Limit the repo to a single version for non versionned repo")
forbidden_regex = fields.Char('Forbidden regex', help="Regex that forid bundle creation if branch name is matching", tracking=True)
invalid_branch_message = fields.Char('Forbidden branch message', tracking=True)
diff --git a/runbot/views/repo_views.xml b/runbot/views/repo_views.xml
index 2033f873..06d8d1f3 100644
--- a/runbot/views/repo_views.xml
+++ b/runbot/views/repo_views.xml
@@ -85,6 +85,7 @@
+