def clear_git_lock(role, remote=None, **kwargs):
    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 role == '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
.. versionadded:: 2015.8.2
dataset/ETHPy150Open saltstack/salt/salt/runners/cache.py/clear_git_lock