我正在编写一个电子应用程序,它必须不时地克隆和提取存储库,并且运行良好。但是,它在企业身份验证(基本或摘要)代理后面失败。据我了解,电子可以简化Chromium代理功能,但是我正在使用的dugite(我正在使用的git库)正在主要过程中运行,并尝试直接连接到git存储库。 有什么方法可以将代理用于dugite吗?
编辑:我进行了一些其他研究,并找出了node doesn't handle proxy connections for you。仅当代理设置在渲染器视图中使用并且仅使用浏览器窗口的方法(例如fetch)时,才会接受代理设置。因此,我也尝试在渲染器过程中尝试使用isomorphic-git替换为dugite,但由于某种未知的原因,它也无法正常工作。
接受的解决方案必须是可以在电子应用程序内部处理的代码。
答案 0 :(得分:0)
您可以将HTTP_PROXY
传递给GitProcess.exec()
:
const options = {
env: {
'GIT_HTTP_USER_AGENT': 'dugite/2.12.0',
'GIT_TRACE': '1',
'GIT_CURL_VERBOSE': '1',
'HTTP_PROXY': '[protocol://][user[:password]@]proxyhost[:port]'
},
processCallback: (process: ChildProcess) => {
byline(process.stderr).on('data', (chunk: string) => {
// read line from progress and convert to percentage
})
}
}
const result = await GitProcess.exec([ 'pull', 'origin' ], path, options)
或者,您可以在存储库中执行git config http.proxy [protocol://][user[:password]@]proxyhost[:port]
,这将为存储库范围(https://git-scm.com/docs/git-config#Documentation/git-config.txt-httpproxy)配置http代理