Обзор архивов исходного кода
Вы можете скачать snapshot любой ветви, тега или конкретной фиксации из ваше предприятие. Эти моментальные снимки создаются командойgit archive
в одном из двух форматов: tarball или zipball. Моментальные снимки не содержат весь журнал репозитория. Если требуется весь журнал, можно клонировать репозиторий. Дополнительные сведения см. в разделе Клонирование репозитория.
Скачивание архивов исходного кода
Архивы исходного кода можно скачать тремя способами.
Скачивание архивов исходного кода из представления репозитория
-
На ваше предприятие перейдите на главную страницу репозитория.
-
Над списком файлов щелкните Код.
-
Щелкните Скачать ZIP-файл.
Скачивание архивов исходного кода из выпуска
-
На ваше предприятие перейдите на главную страницу репозитория. 1. Справа от списка файлов щелкните Выпуски.
-
Прокрутите вниз до раздела "Активы" выпуска.
-
Чтобы скачать исходный код, щелкните Исходный код (zip) или Исходный код (tar.gz).
Скачивание архивов исходного кода из тега
-
На ваше предприятие перейдите на главную страницу репозитория. 1. Справа от списка файлов щелкните Выпуски.
-
В верхней части страницы "Выпуски" щелкните Теги.
-
Чтобы скачать исходный код, щелкните ZIP-файл или tar.gz.
URL-адреса архива исходного кода
Архивы исходного кода доступны по определенным URL-адресам для каждого репозитория. Например, рассмотрим репозиторий github/codeql
. Существуют разные URL-адреса для скачивания ветви, тега или определенного ИД фиксации.
Тип архива | Пример | URL-адрес |
---|---|---|
Ветвь | main | https://github.com/github/codeql/archive/refs/heads/ main.tar.gz |
Тег | codeql-cli/v2.12.0 | https://github.com/github/codeql/archive/refs/tags/codeql-cli/v2.12.0.zip |
Commit | aef66c4 | https://github.com/github/codeql/archive/aef66c462abe817e33aad91d97aa782a1e2ad2c7.zip |
Примечание. Вы можете использовать или .zip
.tar.gz
в приведенных выше URL-адресах для запроса zipball или tarball соответственно.
Стабильность архивов исходного кода
Архивы исходного кода создаются по запросу, кэшируются на некоторое время, а затем удаляются. Если тот же архив будет запрошен снова в будущем, он будет повторно создан. Важно понимать, какие гарантии GitHub обеспечивает архивы исходного кода.
- Архив ИД фиксации всегда будет содержать одно и то же содержимое файла при каждом запросе, при условии, что ИД фиксации по-прежнему находится в репозитории и имя репозитория не изменилось.
- Так как ветви и теги могут перемещаться по разным идентификаторам фиксаций, будущие загрузки архива могут иметь содержимое, отличное от содержимого ранее скачанных архивов той же ветви или тега. Предполагая, что ветвь или тег по-прежнему указывают на один и тот же ИД фиксации, они будут иметь то же содержимое файла.
- Точные параметры сжатия, используемые для создания zipball или tarball, могут со временем меняться. Извлеченное содержимое не изменится, если не изменяется ветвь или тег, но внешний сжатый архив может иметь другой макет байтов. GitHub уведомит по крайней мере за шесть месяцев до изменения параметров сжатия.
- Имя репозитория является частью структуры каталогов в архиве. Поэтому при изменении имени репозитория изменится и имя корневого каталога.
Если вы полагаетесь на стабильность архивов исходного кода для воспроизводимости (гарантируя, что вы всегда получаете идентичные файлы в архиве), рекомендуется использовать REST API архивов с ИД фиксации для :ref
. Использование ИД фиксации гарантирует, что вы всегда будете получать одно и то же содержимое файла в архиве, и вы будете невосприимчивы к репозиториям, перезаписывая теги или перемещая головки ветвей.
Если вы полагаетесь на стабильность архивов для обеспечения безопасности (например, чтобы предотвратить попытку распакуть вредоносный файл), рекомендуется использовать выпуски вместо исходных загрузок. Дополнительные сведения см. в разделе Сведения о выпусках.
Вы можете использовать что-то вроде этого стороннего действия GitHub для создания и отправки этих файлов в процессе выпуска. Позже для их извлечения можно использовать REST API ресурсов выпуска .