С Git 2.18 (второй квартал 2018 г.) у вас теперь больше контроля над curl
, используемым Git.
Код клиента HTTP, используемый для объявления того, что Git принимает кодировку gzip с другой стороны; вместо этого просто позвольте библиотеке cURL рекламировать и договариваться о лучшем.
См. коммит eaf6a1b, commit 1a53e69 (22 мая 2018 г.), Брэндон Уильямс (mbrandonw
).
(Объединено Юнио С. Хамано -- gitster
-- a> в commit 13e8be9, 30 мая 2018 г.)
remote-curl: принимать все кодировки, поддерживаемые curl
Настройте curl
так, чтобы он принимал все кодировки, которые поддерживает curl, а не только ответы gzip.
Это устраняет проблему при использовании установки curl, которая собрана без функции zlib
. Поскольку aa90b96 (включить распаковку info/refs gzip в HTTP-клиенте, 19 сентября 2012 г. , Git 1.7.12.3) мы все равно запрашиваем gzip
кодировку, несмотря на то, что libcurl
не может ее декодировать.
Хуже того, вместо того, чтобы получить четкое сообщение об ошибке, указывающее на это, мы в конечном итоге возвращаемся к глупому http, создавая запутанный и трудно отладить результат.
Поскольку curl
не проверяет, поддерживает ли запрошенная кодировка, вместо этого установите параметр curl CURLOPT_ENCODING
с пустой строкой, указывающей, что curl должен отправлять заголовок Accept-Encoding
, содержащий только кодировки, поддерживаемые curl.
работать с GIT_CURL_VERBOSE=1 слишком долго, чтобы публиковать здесь, к сожалению
До Git 2.28 в любом случае было бы небезопасно публиковать здесь для GIT_CURL_VERBOSE
или GIT_TRACE_CURL
.
В Git 2.28 (3 квартал 2020 г.) поддержка GIT_CURL_VERBOSE
переписана с точки зрения GIT_TRACE_CURL
.
См. коммит 7167a62, коммит 373e9bd (11 мая 2020 г.), автор Джонатан Тан (jhowtan
).
(Объединено Junio C Hamano -- gitster
-- a> в commit 0b925a4, 9 июня 2020 г.)
http, imap-send
: прекратите использовать CURLOPT_VERBOSE
Подписано: Джонатан Тан
Всякий раз, когда установлено GIT_CURL_VERBOSE
, научите Git вести себя так, как если бы были установлены GIT_TRACE_CURL=1
и GIT_TRACE_CURL_NO_DATA=1
, вместо установки CURLOPT_VERBOSE
.
Это делается для предотвращения непреднамеренного раскрытия конфиденциальных данных.
В частности, GIT_CURL_VERBOSE
не редактирует ни заголовок Authorization
, ни файлы cookie, указанные GIT_REDACT_COOKIES
.
Унификация механизма отслеживания также имеет будущее преимущество, заключающееся в том, что любые улучшения механизма отслеживания принесут пользу как пользователям GIT_CURL_VERBOSE
, так и GIT_TRACE_CURL,
, и нам не нужно помнить о необходимости внесения каких-либо улучшений дважды.
По-прежнему в Git 2.28 (3 квартал 2020 г.) интерфейс для редактирования конфиденциальной информации в выводе трассировки был упрощен.
См. commit 827e7d4 (5 июня 2020 г.) от Джонатан Тан (jhowtan
).
(объединено Хунио C Хамано -- gitster
-- в commit b8a5299 а>, 22 июня 2020 г.)
http
: удалить все файлы cookie, научить GIT_TRACE_REDACT=0
Подписано: Джонатан Тан
В выводе трассировки (когда GIT_TRACE_CURL
истинно) отредактируйте значения всех файлов cookie HTTP по умолчанию.
Теперь заголовки аутентификации (с момента реализации GIT_TRACE_CURL
в 74c682d3c6 ([
http.c](https
: //github.com/git/git/blob/827e7d4da470e8b9b222b2cf3b4a3b7f8c3c671f/http.c): реализации этой GIT_TRACE_CURL
переменной окружения, 2016- 24 05, Git v2.10.0-rc0 – слияние, указанное в batch #3)) и значения файлов cookie (с момента этой фиксации) редактируются по умолчанию в этих трассировках, также разрешить пользователю запретить эти исправления с помощью переменной среды.
Поскольку значения всех файлов cookie теперь редактируются по умолчанию, GIT_REDACT_COOKIES
(который ранее позволял пользователям выбирать отдельные файлы cookie для редактирования) теперь не действует.
person
VonC
schedule
03.06.2018