Mercurial > kallithea
changeset 6772:05437d03bc9e stable
admin: better handling of rescan/delete and invalidate at the same time (Issue #252)
It would try to invalidate deleted repositories before rescan would delete them.
Instead, scan first, then invalidate.
Also, handle VCS error from invalidation and report success as a flash message.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Sun, 22 Jan 2017 01:16:52 +0100 |
parents | afda98017955 |
children | 9a773d2f022b |
files | kallithea/controllers/admin/settings.py |
diffstat | 1 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/admin/settings.py Sun Jan 22 01:16:52 2017 +0100 +++ b/kallithea/controllers/admin/settings.py Sun Jan 22 01:16:52 2017 +0100 @@ -203,11 +203,6 @@ 'install git hooks=%s and ' 'overwrite git hooks=%s' % (rm_obsolete, install_git_hooks, overwrite_git_hooks)) - if invalidate_cache: - log.debug('invalidating all repositories cache') - for repo in Repository.get_all(): - ScmModel().mark_for_invalidation(repo.repo_name, delete=True) - filesystem_repos = ScmModel().repo_scan() added, removed = repo2db_mapper(filesystem_repos, rm_obsolete, install_git_hooks=install_git_hooks, @@ -218,6 +213,18 @@ for repo_name in added) or '-', ', '.join(h.escape(safe_unicode(repo_name)) for repo_name in removed) or '-')), category='success') + + if invalidate_cache: + log.debug('invalidating all repositories cache') + i = 0 + for repo in Repository.get_all(): + try: + ScmModel().mark_for_invalidation(repo.repo_name, delete=True) + i += 1 + except VCSError as e: + log.warning('VCS error invalidating %s: %s', repo.repo_name, e) + h.flash(_('Invalidated %s repositories') % i, category='success') + return redirect(url('admin_settings_mapping')) defaults = Setting.get_app_settings()