Visual Studio 2019 + Bundled Git - провайдер шифрования SChannel не работает, если автономная установка Git завершается успешно - PullRequest
0 голосов
/ 07 мая 2020

Фон

Наша организация распространяет внутренние сертификаты, используя групповую политику на нашем контроллере домена. Для наших установок git это означает, что нам нужно будет использовать библиотеку 'Windows Secure Channel' для HTTPS-соединений, а не OpenSSL.

Проблема

Попытка подключиться к удаленному репозиторию Git с использованием VS2019 Enterprise в комплекте Git с schannel завершается с ошибкой:

schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - The revocation function was unable to check revocation because the revocation server was offline

Эта ошибка появляется как при использовании пользовательского интерфейса VS2019 для попытки синхронизации c с репозиторием, так и при запуске его через командную строку. (Путь к исполняемому файлу, который я использую, равен C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd\git.exe)

Однако, если я запустил исполняемый файл git в комплекте с VS2017, я могу успешно синхронизировать c с репо (исполняемый путь: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd\git.exe). ОДНАКО, если я открываю VS2017 и пытаюсь использовать пользовательский интерфейс, я получаю ту же ошибку schannel, что и выше!

Сводка

Выполнение автономной установки git и его настройка с помощью Windows Secure Channel успешно подключается к удаленному репозиторию.

VS2019 в комплекте git не работает при использовании интерфейса IDE или командной строки.

VS2017 в комплекте git работает в командной строке, но не через интерфейс IDE.

Файлы конфигурации

Мой глобальный .gitconfig выглядит так:

[user]
    name = xxx
    email = xxx@xxx.com
[http]
    sslBackend = schannel

VS2019 .gitconfig выглядит так:

[core]
    symlinks = false
    autocrlf = true
[color]
    diff = auto
    status = auto
    branch = auto
    interactive = true
[pack]
    packSizeLimit = 2g
[help]
    format = html
[diff "astextplain"]
    textconv = astextplain
[rebase]
    autosquash = true
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
[include]
    ; include Git for Windows' system config in order
    ; to inherit settings like `core.autocrlf`
    path = C:/Program Files (x86)/Git/etc/gitconfig
    path = C:/Program Files/Git/etc/gitconfig

VS2017 .gitconfig выглядит так (точно так же, как VS2019):

[core]
    symlinks = false
    autocrlf = true
[color]
    diff = auto
    status = auto
    branch = auto
    interactive = true
[pack]
    packSizeLimit = 2g
[help]
    format = html
[diff "astextplain"]
    textconv = astextplain
[rebase]
    autosquash = true
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
[include]
    ; include Git for Windows' system config in order
    ; to inherit settings like `core.autocrlf`
    path = C:/Program Files (x86)/Git/etc/gitconfig
    path = C:/Program Files/Git/etc/gitconfig

1 Ответ

1 голос
/ 08 мая 2020

Вы можете попробовать следующие шаги:

  1. Удалить папку (вы можете создать резервную копию этой папки, если вам нужно ее восстановить): C:\Program Files (x86)\Microsoft Visual Studio\2019\xxx\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git

  2. Убедитесь, что в вашей системе не установлена ​​версия Git. Удалите их в Control Panel / Uninstall a program, как только у вас будет Git.

  3. Загрузите последнюю версию из Git и установите ее.

  4. Запустите эту команду в своей оболочке Git, чтобы отключить проверку отзыва:

    $ git config --global http.schannelCheckRevoke false

    Примечание:

    From эта ссылка :

    Мы не рекомендуем устанавливать это значение конфигурации для обычного использования Git. Это предназначено для использования в качестве «аварийного выхода» в ситуациях, когда администратор сети ограничил нормальное использование API SChannel на Windows, которое пытается использовать Git.

...