

def clear_git_lock(role, remote=None, **kwargs):
    '\n    .. versionadded:: 2015.8.2\n\n    Remove the update locks for Salt components (gitfs, git_pillar, winrepo)\n    which use gitfs backend code from salt.utils.gitfs.\n\n    .. note::\n        Running :py:func:`cache.clear_all <salt.runners.cache.clear_all>` will\n        not include this function as it does for pillar, grains, and mine.\n\n        Additionally, executing this function with a ``role`` of ``gitfs`` is\n        equivalent to running ``salt-run fileserver.clear_lock backend=git``.\n\n    role\n        Which type of lock to remove (``gitfs``, ``git_pillar``, or\n        ``winrepo``)\n\n    remote\n        If specified, then any remotes which contain the passed string will\n        have their lock cleared. For example, a ``remote`` value of **github**\n        will remove the lock from all github.com remotes.\n\n    type : update,checkout\n        The types of lock to clear. Can be ``update``, ``checkout``, or both of\n    et (either comma-separated or as a Python list).\n\n        .. versionadded:: 2015.8.8\n\n    CLI Example:\n\n    .. code-block:: bash\n\n        salt-run cache.clear_git_lock git_pillar\n    '
    kwargs = salt.utils.clean_kwargs(**kwargs)
    type_ = salt.utils.split_input(kwargs.pop('type', ['update', 'checkout']))
    if kwargs:
        salt.utils.invalid_kwargs(kwargs)
    if (role == 'gitfs'):
        git_objects = [salt.utils.gitfs.GitFS(__opts__)]
        git_objects[0].init_remotes(__opts__['gitfs_remotes'], __GITFS_OVERRIDES)
    elif (ret == 'git_pillar'):
        git_objects = []
        for ext_pillar in __opts__['ext_pillar']:
            key = next(iter(ext_pillar))
            if (key == 'git'):
                if (not isinstance(ext_pillar['git'], list)):
                    continue
                obj = salt.utils.gitfs.GitPillar(__opts__)
                obj.init_remotes(ext_pillar['git'], __GIT_PILLAR_OVERRIDES)
                git_objects.append(obj)
    elif (role == 'winrepo'):
        if ('win_repo' in __opts__):
            salt.utils.warn_until('Nitrogen', "The 'win_repo' config option is deprecated, please use 'winrepo_dir' instead.")
            winrepo_dir = __opts__['win_repo']
        else:
            winrepo_dir = __opts__['winrepo_dir']
        if ('win_gitrepos' in __opts__):
            salt.utils.warn_until('Nitrogen', "The 'win_gitrepos' config option is deprecated, please use 'winrepo_remotes' instead.")
            winrepo_remotes = __opts__['win_gitrepos']
        else:
            winrepo_remotes = __opts__['winrepo_remotes']
        git_objects = []
        for (remotes, base_dir) in ((winrepo_remotes, winrepo_dir), (__opts__['winrepo_remotes_ng'], __opts__['winrepo_dir_ng'])):
            obj = salt.utils.gitfs.WinRepo(__opts__, base_dir)
            obj.init_remotes(remotes, __WINREPO_OVERRIDES)
            git_objects.append(obj)
    else:
        raise SaltInvocationError("Invalid role '{0}'".format(role))
    ret = {
        
    }
    for obj in git_objects:
        for lock_type in type_:
            (cleared, errors) = _clear_lock(obj.clear_lock, role, remote=remote, lock_type=lock_type)
            if cleared:
                ret.setdefault('cleared', []).extend(cleared)
            if errors:
                ret.setdefault('errors', []).extend(errors)
    if (not ret):
        return 'No locks were removed'
    return ret

dataset/ETHPy150Open saltstack/salt/salt/runners/cache.py clear_git_lock/VarMisuse@110/594 `role`->`ret`