def get_config(repo):
    deployment_config = __pillar__.get('deployment_config')
    config = __pillar__.get('repo_config')
    config = config[repo]
    config.setdefault('type', 'git-http')
    # location is the location on the filesystem of the repository
    # shadow_location is the location on the filesystem of the shadow
    # reference repository.
    if 'location' in config:
        location = config['location']
        shadow_location = '{0}/.{1}'.format(os.path.dirname(location),
                                            os.path.basename(location))
        config['shadow_location'] = shadow_location
    else:
        location = '{0}/{1}'.format(deployment_config['parent_dir'], repo)
        config['location'] = location
        shadow_repo = '{0}/.{1}'.format(os.path.dirname(repo),
                                        os.path.basename(repo))
        shadow_location = '{0}/{1}'.format(deployment_config['parent_dir'],
                                           shadow_repo)
        config['shadow_location'] = shadow_location
    site = __grains__.get('site')
    server = deployment_config['servers'][site]
    #TODO: fetch scheme/url from implementation
    if config['type'] == 'git-http':
        scheme = 'http'
    elif config['type'] == 'git-https':
        scheme = 'https'
    elif config['type'] == 'git-ssh':
        scheme = 'ssh'
    elif config['type'] == 'git':
        scheme = 'git'
    else:
        scheme = 'http'
    # The url of the remote on the deployment server. Target hosts will fetch
    # from this during deployment.
    config['url'] = '{0}://{1}/{2}'.format(scheme, server, repo)
    # checkout_submodules determines whether or not this repo should
    # recursively fetch and checkout submodules.
    config.setdefault('checkout_submodules', False)
    # If gitfat_enabled is true, git-fat will be initiliazed and
    # git-fat pull will be run on each target as part of the checkout.
    config.setdefault('gitfat_enabled', False)
    # dependencies are a set of repositories that should be fetched
    # and checked out before this repo. This is a deprecated feature.
    config.setdefault('dependencies', {})
    # fetch_module_calls is a hash of salt modules with a list of arguments
    # that will be called at the end of the fetch stage.
    # TODO (ryan-lane): add a pre-fetch option
    config.setdefault('fetch_module_calls', {})
    # checkout_module_calls is a hash of salt modules with a list of arguments
    # that will be called at the end of the checkout stage.
    # TODO (ryan-lane): add a pre-checkout option
    config.setdefault('checkout_module_calls', {})
    # sync_script specifies the script that should be linked to on the
    # deployment server for the perl git-deploy. This option is deprecated.
    config.setdefault('sync_script', 'shared.py')
    # upstream specifies the upstream url of the repository and is used
    # to clone repositories on the deployment server.
    config.setdefault('upstream', None)
    # shadow_reference determines whether or not to make a reference clone
    # of a repository on the minions during the fetch stage. This feature
    # enables fetch_module_calls modules to run commands against the current
    # checkout of code before it's made live.
    config.setdefault('shadow_reference', False)
    # service_name is the service associated with this repository and
    # allows the deployment module to run service restart/stop/start/etc
    # for services without allowing end-users the ability to restart all
    # services on the targets.
    config.setdefault('service_name', None)
    return config
Fetches the configuration for this repo from the pillars and returns
dataset/ETHPy150Open trebuchet-deploy/trebuchet/modules/deploy.py/get_config