コード例 #1
0
def do_upgrade(env, version, cursor):
    """Replace list of repositories in [trac] repository_sync_per_request
    with boolean values [repositories] <repos>.sync_per_request.
    """
    repos_sync_per_request = \
        env.config.getlist('trac', 'repository_sync_per_request')
    if not repos_sync_per_request:
        return

    backup_config_file(env, '.db32.bak')
    rm = RepositoryManager(env)
    db_provider = env[DbRepositoryProvider]

    trac_ini_repo_names = []
    for name, _ in rm.get_repositories():
        trac_ini_repo_names.append(name)
    for repos in rm.get_all_repositories().values():
        sync_per_request = (repos['name'] or '(default)') \
                           in repos_sync_per_request
        if sync_per_request:
            if repos['name'] in trac_ini_repo_names:
                env.config.set('repositories',
                               repos['name'] + '.sync_per_request', 'true')
            else:
                changes = {'sync_per_request': sync_per_request}
                db_provider.modify_repository(repos['name'], changes)
    env.log.info(
        "Removed [trac] repository_sync_per_request option and "
        "enabled sync_per_request for the following "
        "repositories: %s", ', '.join(repos_sync_per_request))
    env.config.remove('trac', 'repository_sync_per_request')
    env.config.save()
コード例 #2
0
def do_upgrade(env, version, cursor):
    """Replace list of repositories in [trac] repository_sync_per_request
    with boolean values [repositories] <repos>.sync_per_request and a list
    of repositories in [gitweb-repositories] sync_per_request. Move and
    rename the Gitweb configuration options from the [git] section to
    the [gitweb-repositories] section.
    """
    backup_config_file(env, '.db32.bak')
    repos_sync_per_request = \
        env.config.getlist('trac', 'repository_sync_per_request', '(default)')

    for suffix in ('base', 'list', 'url'):
        option_name = 'projects_' + suffix
        env.config.set('gitweb-repositories', option_name,
                       env.config.get('git', option_name))
        env.config.remove('git', option_name)
        env.log.info("Moved [git] %s -> [gitweb-repositories] %s", option_name,
                     option_name)

    rm = RepositoryManager(env)
    if repos_sync_per_request:
        for name, _ in rm.get_repositories():
            sync_per_request = (name or '(default)') in repos_sync_per_request
            if sync_per_request:
                env.config.set('repositories', name + '.sync_per_request',
                               'true')
                env.log.info("Enabled sync_per_request for %s", name)

        gwrp = GitwebProjectsRepositoryProvider(env)
        gitweb_repo_names = [name for name, _ in gwrp.get_repositories()]
        sync_per_request = \
            ', '.join(set(gitweb_repo_names) & set(repos_sync_per_request))
        env.config.set('gitweb-repositories', 'sync_per_request',
                       sync_per_request)
        env.log.info("Enabled sync_per_request for %s", sync_per_request)

        db_provider = DbRepositoryProvider(env)
        for name, _ in db_provider.get_repositories():
            sync_per_request = (name or '(default)') in repos_sync_per_request
            changes = {'sync_per_request': sync_per_request}
            db_provider.modify_repository(name, changes)
            if sync_per_request:
                env.log.info("Enabled sync_per_request for %s", name)

    env.config.remove('trac', 'repository_sync_per_request')
    env.log.info("Removed [trac] repository_sync_per_request option")
    env.config.save()
    rm.reload_repositories()