Дугит / изоморфный мерзавец в электроне за прокси

Я пишу электронное приложение, которое время от времени должно клонировать и извлекать репозитории, и оно работает хорошо. Тем не менее, он не работает за корпоративным аутентифицированным (базовым или дайджест) прокси. Как я понимаю, электрон может облегчить работу прокси-серверов Chromium, но dugite, библиотека git, которую я использую, работает в основном процессе и пытается напрямую подключиться к репозиторию git. Есть ли какой-нибудь способ, которым я могу использовать прокси для dugite?

РЕДАКТИРОВАТЬ: Я провел дополнительное исследование и выяснил, что узел не обрабатывает прокси-соединения для вас. Настройки прокси учитываются только в том случае, если они находятся внутри представления рендера, и только если они используют методы окна браузера, такие как fetch. Поэтому я также попробовал isomorphic-git как замену дугита в процессе рендеринга, но это - по неизвестной причине - тоже не сработало.

Принятые решения должны быть кодом, который может быть обработан в электронном приложении.

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]в вашем репозитории, который настроит http-прокси для области репозитория (https://git-scm.com/docs/git-config)

Другие вопросы по тегам