2016-10-07 3 views
5

Я пытаюсь использовать LibGit2Sharp в git push origin используя следующиесетевых операций Git за корпоративным брандмауэром, используя LibGit2Sharp бросает

using(var repo = new Repository("path\to\repo\.git")) 
{ 
    var commit = repo.Commit("Commit message", author, committer); 

    var options = new PushOptions{ CredentialsProvider = (u, s, t) => new UserNamePasswordCredentials { Username = "username", Password = "password" } }; 
    repo.Network.Push(repo.Branches("master"), options); 
} 

Я получаю LibGit2SharpException говоря

Дополнительная информация: Не удалось установить прокси-сервер: Неверный параметр.

Но в мерзавца Баш все в порядке, когда я git push origin.

У нас есть прокси-сервер NTLM на работе, и я нажимаю на удаленный URI intranet https. Я настроил прокси, как http://username:[email protected]:80 в следующем:

  • Env вары: HTTP_PROXY & https_proxy
  • РЕПО .git/конфигурации:
    • remote.origin.proxy
    • http.proxy
    • https.proxy
    • http.sslCAInfo & https.sslCAInfo - это путь к корневому ЦС для хоста

Прочитав this SO and links there, похоже libgit2sharp должен найти параметр прокси просто отлично. Кто-нибудь получил это, чтобы работать с ntlm?

Я использую: для Windows 7, LibGit2Sharp.0.22.0, Git 2.10.1.windows.1, Баш 4.3.46, .net4.5.2

Любые идеи/фокусы достижения протолкнуть альтернатива также очень приветствуется!

ответ

0

Это происходит от «libgit2 src/transports/winhttp.c», который вызывает непосредственно Windows API WinHttpSetOption function.

Он передает WINHTTP_OPTION_PROXY, чтобы установить или получить структуру WINHTTP_PROXY_INFO, которая содержит данные прокси-сервера в существующем дескрипторе сеанса или ручке запроса.

Эта функция возвращает ERROR_INVALID_PARAMETER (параметр недействителен), только если значение WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL установлено на значение ниже 15000.

Я не знаю, почему LibGit2Sharp имеет эту проблему, но попробуйте сначала только установить переменные окружения HTTP_PROXY & HTTPS_PROXY (не http.proxy & https.proxy), и убедитесь, что использовать один и тот же URL-адрес HTTP как для прокси-переменных окружения (не HTTPS URL для HTTPS_PROXY)

официальный libgit2 ошибка на это issue 2106, который должен быть решен с PR 3110 и commit 1dc4491.
Однако это исправление не часть релиза еще.

+0

Такая же ошибка при настройке env vars – aateeque

+0

@aateeque у вас есть специальный символ в вашем имени пользователя или пароле для прокси? – VonC

+0

Нет, ничего. Просто буквы и цифры – aateeque