feat(upgrade): added feature to bulk upgrade hooks from 4.X -> 5.X fixes RCCE-34
This commit is contained in:
parent
174ccfff79
commit
719ae001e0
7 changed files with 14 additions and 10 deletions
2
Makefile
2
Makefile
|
|
@ -145,7 +145,7 @@ dev-srv:
|
|||
.PHONY: dev-srv-g
|
||||
## run gunicorn multi process workers
|
||||
dev-srv-g:
|
||||
gunicorn --paste .dev/dev.ini --bind=0.0.0.0:10020 --config=.dev/gunicorn_config.py --timeout=120
|
||||
gunicorn --paste .dev/dev.ini --bind=0.0.0.0:10020 --config=.dev/gunicorn_config.py --timeout=120 --reload
|
||||
|
||||
|
||||
# Default command on calling make
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ def rescan_repos(request, apiuser, remove_obsolete=Optional(False)):
|
|||
try:
|
||||
rm_obsolete = Optional.extract(remove_obsolete)
|
||||
added, removed = repo2db_mapper(ScmModel().repo_scan(),
|
||||
remove_obsolete=rm_obsolete)
|
||||
remove_obsolete=rm_obsolete, force_hooks_rebuild=True)
|
||||
return {'added': added, 'removed': removed}
|
||||
except Exception:
|
||||
log.exception('Failed to run repo rescann')
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ class AdminSettingsView(BaseAppView):
|
|||
def settings_mapping(self):
|
||||
c = self.load_default_context()
|
||||
c.active = 'mapping'
|
||||
|
||||
c.storage_path = VcsSettingsModel().get_repos_location()
|
||||
data = render('rhodecode:templates/admin/settings/settings.mako',
|
||||
self._get_template_context(c), self.request)
|
||||
html = formencode.htmlfill.render(
|
||||
|
|
@ -245,7 +245,7 @@ class AdminSettingsView(BaseAppView):
|
|||
ScmModel().mark_for_invalidation(repo.repo_name, delete=True)
|
||||
|
||||
filesystem_repos = ScmModel().repo_scan()
|
||||
added, removed = repo2db_mapper(filesystem_repos, rm_obsolete)
|
||||
added, removed = repo2db_mapper(filesystem_repos, rm_obsolete, force_hooks_rebuild=True)
|
||||
PermissionModel().trigger_permission_flush()
|
||||
|
||||
def _repr(rm_repo):
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ def map_groups(path):
|
|||
return group
|
||||
|
||||
|
||||
def repo2db_mapper(initial_repo_list, remove_obsolete=False):
|
||||
def repo2db_mapper(initial_repo_list, remove_obsolete=False, force_hooks_rebuild=False):
|
||||
"""
|
||||
maps all repos given in initial_repo_list, non existing repositories
|
||||
are created, if remove_obsolete is True it also checks for db entries
|
||||
|
|
@ -537,9 +537,10 @@ def repo2db_mapper(initial_repo_list, remove_obsolete=False):
|
|||
group = map_groups(name)
|
||||
str_name = safe_str(name)
|
||||
db_repo = repo_model.get_by_repo_name(str_name)
|
||||
|
||||
# found repo that is on filesystem not in RhodeCode database
|
||||
if not db_repo:
|
||||
log.info('repository %s not found, creating now', name)
|
||||
log.info('repository `%s` not found in the database, creating now', name)
|
||||
added.append(name)
|
||||
desc = (repo.description
|
||||
if repo.description != 'unknown'
|
||||
|
|
@ -570,7 +571,7 @@ def repo2db_mapper(initial_repo_list, remove_obsolete=False):
|
|||
config = db_repo._config
|
||||
config.set('extensions', 'largefiles', '')
|
||||
repo = db_repo.scm_instance(config=config)
|
||||
repo.install_hooks()
|
||||
repo.install_hooks(force=force_hooks_rebuild)
|
||||
|
||||
removed = []
|
||||
if remove_obsolete:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@ ${h.secure_form(h.route_path('admin_settings_mapping_update'), request=request)}
|
|||
<h3 class="panel-title">${_('Import New Groups or Repositories')}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<p>
|
||||
${_('This function will scann all data under the current storage path location at')} <code>${c.storage_path}</code>
|
||||
</p>
|
||||
|
||||
<div class="checkbox">
|
||||
${h.checkbox('destroy',True)}
|
||||
<label for="destroy">${_('Destroy old data')}</label>
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ class TestRepoContainer(object):
|
|||
return Repository.get(self._repos[key])
|
||||
|
||||
def _create_repo(self, dump_name, backend_alias, config):
|
||||
repo_name = '%s-%s' % (backend_alias, dump_name)
|
||||
repo_name = f'{backend_alias}-{dump_name}'
|
||||
backend = get_backend(backend_alias)
|
||||
dump_extractor = self.dump_extractors[backend_alias]
|
||||
repo_path = dump_extractor(dump_name, repo_name)
|
||||
|
|
|
|||
|
|
@ -231,8 +231,6 @@ def platform_encodes_filenames():
|
|||
return path_with_latin1 != read_path
|
||||
|
||||
|
||||
|
||||
|
||||
def test_repo2db_mapper_groups(repo_groups):
|
||||
session = meta.Session()
|
||||
zombie_group, parent_group, child_group = repo_groups
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue