MyTetra Share
Делитесь знаниями!
git - Использовать прокси только для определенных git URL-адресов/доменов?
09.12.2017
11:32
Раздел: Git

qaru.site

git - Использовать прокси только для определенных git URL-адресов/доменов?

8-10 минут


Обычно я использую переменные среды:

  • http_proxy=http://username:password@proxydomain:port
  • https_proxy=http://username:password@proxydomain:port

Подбирается git при доступе к репозиторию GitHub.

Примечание:

  • оба http_proxy и https_proxy должны использовать URL-адрес http:// прокси-сервера (no https://).
  • всегда используйте fqn (полное квалифицированное имя) proxydomain (не полагайтесь на его короткое имя)

Но для внутреннего репо все, что мне нужно сделать, это определить и экспортировать еще одну переменную среды:

  • no_proxy=.my.company,localhost,127.0.0.1,::1, для доступа к любому репо с адресом типа myrepo.my.company или localhost.

Вы можете определить NO_PROXY или NO_PROXY, это не имеет значения.

Но на всякий случай я всегда устанавливаю http_proxy, https_proxy, http_proxy, https_proxy, NO_PROXY и NO_PROXY.

ответ дан

VonC 17 апр. '13 в 23:43 источник

Чтобы добавить еще одну возможность, вы можете определить прокси-сервер через git config http.proxy.

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:proxyport 

Но то, что действительно опрятно, начало git1.8.5 (октябрь 2013 г.), вы можете установить настройки http на url.

Теперь переменные "http.*" могут быть указаны для каждого URL-адреса, который применяется в конфигурации.
Например,

[http]
   sslVerify = true
[http "https://weak.example.com/"]
   sslVerify = false 

будет отключать http.sslVerify только при разговоре с указанным сайтом.


См. commit d4770964d5:

$ git config --bool --get-urlmatch http.sslVerify https://good.example.com
true
$ git config --bool --get-urlmatch http.sslVerify https://weak.example.com
false 

Только с указанным <section> вы можете получить список всех переменных в разделе с их значениями, которые относятся к данному URL. Например

$ git config --get-urlmatch http https://weak.example.com
http.sslverify false 

Все подробности находятся в commit 6a56993b:

http.<url>.*:: 

Любой из приведенных выше параметров http. * может быть применен выборочно к некоторым URL-адресам.
Чтобы ключ конфигурации соответствовал URL-адресу, каждый элемент ключа конфигурации сравнивается с элементом URL-адреса в следующем порядке:

  • Схема (например, https в https://example.com/).
  • Имя хоста/домена (например, example.com в https://example.com/).
  • Номер порта (например, 8080 в http://example.com:8080/).
  • Путь (например, repo.git в https://example.com/repo.git).
  • Имя пользователя (например, user в https://user@example.com/repo.git)

Приведенный выше список упорядочивается с уменьшением приоритета; URL, который соответствует пути ключа конфигурации, предпочтительнее того, который соответствует его имени пользователя.
Например, если URL-адрес https://user@example.com/foo/bar, соответствие конфигурационного ключа https://example.com/foo будет предпочтительным по сравнению с совпадением конфигурации ключа https://user@example.com.

Все URL-адреса нормализуются, прежде чем пытаться выполнить какое-либо сопоставление (часть пароля, если она встроена в URL-адрес, всегда игнорируется для соответствия), так что эквивалентные URL-адреса, которые просто написаны по-разному, будут соответствовать правильно.

Параметры переменной окружения всегда переопределяют любые соответствия.
Подходящие URL-адреса связаны с командами Git.
Это означает, что любые URL-адреса + посещенные в результате перенаправления не участвуют в сопоставлении.

ответ дан

VonC 10 сент. '13 в 10:00 источник

Как уже упоминалось здесь, вы можете сделать это, указав URL-адрес вместе с настройками прокси-сервера, но здесь вариант использования, который исправил это для меня. Благодаря VonC выше!

Обратите внимание, что я указываю корень сервера Git. Полный путь к клонированию Git, который вы клонировали, не требуется. Вы можете использовать единую запись для обслуживания всего сервера.

Добавьте в свой файл .gitconfig следующее. В моей системе Windows я использую% userprofile% \. Gitconfig

[http]
    proxy = http://my.proxy.net:8080
[https]
    proxy = http://my.proxy.net:8443
[http "http://my.internalgitserver.com/"]
    proxy = "" 

ответ дан

Artif3x 13 янв. '17 в 1:05 источник

Вы можете настроить различные параметры конфигурации для каждого пульта. Скажем, у нас есть 2 пульта, названных origin и upstream соответственно. Вы настраиваете прокси для каждого из следующих действий:

git config --path remote.origin.proxy http://user:pass@proxy_for_origin:8080
git config --path remote.upstream.proxy http://user:pass@proxy_for_upstream:8080 

Это изменит разделы каждого удаленного в конфигурации локального репозитория (.git/config).

Вы также можете настроить параметры глобальной конфигурации, если хотите. Поскольку нет смысла ссылаться на удаленное имя в глобальном файле конфигурации ($HOME/.gitconfig), вы можете использовать сопоставление url (IIRC, поддерживаемый с Git 1.8.5). Пример:

[http "https://example.com/repo1.git"]
    proxy = http://user:pass@proxy1:8080
[http "https://example.com/repo2.git"]
    proxy = http://user:pass@proxy2:8080 

Если вы хотите увидеть, что было установлено:

git config --path --get-urlmatch https://example.com/repo1.git
git config --path --get-urlmatch https://example.com/repo2.git источник 

В Windows, просто [примечание без пароля] после работы для меня

git config --global http.proxy http://mydomain\\myusername:@myproxyserver:proxyport

git config --global https.proxy http://mydomain\\myusername:@myproxyserver:proxyport источник 


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования