git - Visual Studio 2019 + Bundled Git - SChannel 加密提供程序在独立 Git 安装成功的情况下失败
问题描述
背景
我们的组织通过在我们的域控制器上使用组策略来分发内部证书。对于我们的 git 安装,这意味着我们需要使用“Windows 安全通道”库进行 HTTPS 连接,而不是 OpenSSL。
问题
尝试使用带有 schannel 的 VS2019 Enterprise 捆绑 Git 连接到远程 Git 存储库失败并出现错误:
schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - The revocation function was unable to check revocation because the revocation server was offline
当我使用 VS2019 UI 尝试与 repo 同步时,以及通过命令行运行它时,都会出现此错误。(我正在使用的可执行文件的路径是C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd\git.exe
)
但是,如果我运行与 VS2017 捆绑的 git 可执行文件,我可以成功与 repo 同步(可执行路径:)C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd\git.exe
。但是,如果我打开 VS2017 并尝试使用 UI,我会得到与上面相同的 schannel 错误!
概括
执行 git 的独立安装并使用 Windows 安全通道设置它成功连接到远程存储库。
无论是使用 IDE UI 还是通过命令行,VS2019 捆绑的 git 都不起作用。
VS2017 捆绑的 git 在命令行中工作,但不能通过 IDE UI。
配置文件
我的全局 .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
解决方案
您可以尝试以下步骤:
删除文件夹(您可以备份此文件夹以备不时之需):
C:\Program Files (x86)\Microsoft Visual Studio\2019\xxx\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git
确保您的系统上没有安装任何版本的 Git。
Control Panel / Uninstall a program
一旦你有 Git 就卸载它们。下载最新版本的 Git 并安装它。
在您的 Git shell 中运行此命令以禁用吊销检查:
$ git config --global http.schannelCheckRevoke false
笔记:
从这个链接:
我们不建议为正常的 Git 使用设置此配置值。对于网络管理员限制在 Git 尝试使用的 Windows 上正常使用 SChannel API 的情况,这是一个“逃生舱”。
推荐阅读
- javascript - 如何在香草 javascript 中定位兄弟姐妹?
- firebase - 交易中删除的 Firestore 节点
- sql - 如何将 SQL 查询中一个字段的值用于 Oracle Apex 上另一个字段的值列表?
- ssl - 如何在 Kubernetes 中的微服务之间进行 TLS?
- r - 如何在 R 中将字符 Ym 格式化为月份?
- python-3.x - 将字符串拆分为两个不同的列 pandas
- javascript - 如何在浏览器中显示 MVIMG(谷歌相机动态照片)?
- python - 抓取数据并推送到弹性搜索时出现序列化错误
- javascript - 如何使用nodejs调用标识符循环
- html - 如何消除 Bootstrap 4 中列之间的间隙并占据屏幕的全宽?