代理后面电子中的Dugite / isomorphic-git

时间:2018-06-25 18:09:14

标签: node.js git electron isomorphic-git

我正在编写一个电子应用程序,它必须不时地克隆和提取存储库,并且运行良好。但是,它在企业身份验证(基本或摘要)代理后面失败。据我了解,电子可以简化Chromium代理功能,但是我正在使用的dugite(我正在使用的git库)正在主要过程中运行,并尝试直接连接到git存储库。 有什么方法可以将代理用于dugite吗?

编辑:我进行了一些其他研究,并找出了node doesn't handle proxy connections for you。仅当代理设置在渲染器视图中使用并且仅使用浏览器窗口的方法(例如fetch)时,才会接受代理设置。因此,我也尝试在渲染器过程中尝试使用isomorphic-git替换为dugite,但由于某种未知的原因,它也无法正常工作。

接受的解决方案必须是可以在电子应用程序内部处理的代码。

1 个答案:

答案 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代理