mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 13:25:47 +07:00
Add hint_repos set to help find the common branch in cases whith many dependent repos
This commit is contained in:
parent
be765dd6ef
commit
93f7a7d6c3
@ -520,7 +520,7 @@ class runbot_build(osv.osv):
|
|||||||
|
|
||||||
return port
|
return port
|
||||||
|
|
||||||
def get_closest_branch_name(self, cr, uid, ids, target_repo_id, context=None):
|
def get_closest_branch_name(self, cr, uid, ids, target_repo_id, hint_branches, context=None):
|
||||||
"""Return the name of the closest common branch between both repos
|
"""Return the name of the closest common branch between both repos
|
||||||
Find common branch names, get merge-base with the branch name and
|
Find common branch names, get merge-base with the branch name and
|
||||||
return the most recent.
|
return the most recent.
|
||||||
@ -547,6 +547,9 @@ class runbot_build(osv.osv):
|
|||||||
possible_target_branches = set([i['branch_name'] for i in target_names if i['name'].startswith('refs/heads')])
|
possible_target_branches = set([i['branch_name'] for i in target_names if i['name'].startswith('refs/heads')])
|
||||||
possible_branches = possible_repo_branches.intersection(possible_target_branches)
|
possible_branches = possible_repo_branches.intersection(possible_target_branches)
|
||||||
if name not in possible_branches:
|
if name not in possible_branches:
|
||||||
|
hinted_branches = possible_branches.intersection(hint_branches)
|
||||||
|
if hinted_branches:
|
||||||
|
possible_branches = hinted_branches
|
||||||
common_refs = {}
|
common_refs = {}
|
||||||
for target_branch_name in possible_branches:
|
for target_branch_name in possible_branches:
|
||||||
commit = repo.git(['merge-base', branch.name, target_branch_name]).strip()
|
commit = repo.git(['merge-base', branch.name, target_branch_name]).strip()
|
||||||
@ -597,8 +600,10 @@ class runbot_build(osv.osv):
|
|||||||
for a in glob.glob(build.path('*/__openerp__.py'))
|
for a in glob.glob(build.path('*/__openerp__.py'))
|
||||||
)
|
)
|
||||||
build.write({'modules': modules_to_test})
|
build.write({'modules': modules_to_test})
|
||||||
|
hint_branches = set()
|
||||||
for extra_repo in build.repo_id.dependency_ids:
|
for extra_repo in build.repo_id.dependency_ids:
|
||||||
closest_name = build.get_closest_branch_name(extra_repo.id)
|
closest_name = build.get_closest_branch_name(extra_repo.id, hint_branches)
|
||||||
|
hint_branches.add(closest_name)
|
||||||
extra_repo.git_export(closest_name, build.path())
|
extra_repo.git_export(closest_name, build.path())
|
||||||
# Finally mark all addons to move to openerp/addons
|
# Finally mark all addons to move to openerp/addons
|
||||||
additional_modules += [
|
additional_modules += [
|
||||||
|
Loading…
Reference in New Issue
Block a user