git-upload-pack
Имя
git-upload-pack - Отправка упакованных объектов в git-fetch-pack
Синтаксис
git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]
[--advertise-refs] <directory> Описание
Вызывается git fetch-pack, определяет, каких объектов не хватает на стороне клиента, и отправляет их после упаковки.
Этот команд обычно не вызывается напрямую пользователем. Интерфейс для протокола находится на стороне git fetch-pack, а пара программ предназначена для получения обновлений из удаленного репозитория. Для операций отправки см. git send-pack.
Параметры
- --[no-]strict
-
Не пытаться найти .git/ в <каталоге>, если <каталог> не является каталогом Git.
- --timeout=<n>
-
Прервать передачу после <n> секунд бездействия.
- --stateless-rpc
-
Выполнить только один цикл чтения-записи со стандартным вводом и выводом. Это соответствует модели обработки запросов HTTP POST, где программа может прочитать запрос, записать ответ и должна завершиться.
- --http-backend-info-refs
-
Используется git-http-backend[1] для обработки запросов
$GIT_URL/info/refs?service=git-upload-pack. См. раздел «Умные клиенты» в gitprotocol-http[5] и раздел «Транспорт HTTP» в документации gitprotocol-v2[5]. Также поддерживается git-receive-pack[1]. - <каталог>
-
Репозиторий для синхронизации.
Окружение
-
GIT_PROTOCOL -
Внутренняя переменная, используемая для установления связи по протоколу. Администраторы сервера могут потребоваться настроить некоторые транспортные средства, чтобы разрешить передачу этой переменной. См. обсуждение в git[1].
-
GIT_NO_LAZY_FETCH -
При клонировании или получении данных из частичного репозитория (т. е. самого по себе, клонированного с помощью
--filter), серверуupload-packможет потребоваться получить дополнительные объекты из своего источника, чтобы завершить запрос. По умолчаниюupload-packоткажется от выполнения такого ленивого получения, посколькуgit fetchможет запускать произвольные команды, указанные в конфигурации и хуках исходного репозитория (иupload-packстарается безопасно запускать их даже в недоверенных.gitкаталогах).Это реализуется за счет того, что
upload-packвнутренне устанавливает переменнуюGIT_NO_LAZY_FETCHв1. Если вы хотите переопределить это (потому что вы получаете данные из частичного клона, и вы уверены, что доверяете ему), вы можете явно установитьGIT_NO_LAZY_FETCHв0.
Безопасность
Большинство команд Git не должны выполняться в недоверенном .git каталоге (см. раздел SECURITY в git[1]). upload-pack старается избегать любых опасных параметров конфигурации или хуков из репозитория, который он обслуживает, делая безопасным клонирование недоверенного каталога и выполнение команд на созданном клоне.
Для дополнительного уровня безопасности вы можете запустить upload-pack как альтернативного пользователя. Подробности будут зависеть от платформы, но на многих системах вы можете запустить:
git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...
См. также
upload-pack
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-upload-pack