Обзор архивов исходного кода
Моментальный снимок любой ветви, тега или конкретной фиксации можно скачать из GitHub. Эти моментальные снимки создаются командой git archive
в одном из двух форматов: tarball или zipball. Моментальные снимки не содержат всю историю репозитория. Если требуется весь журнал, можно клонировать репозиторий. Дополнительные сведения см. в разделе Клонирование репозитория.
Скачивание архивов исходного кода
Архивы исходного кода можно скачать тремя способами.
Скачивание архивов исходного кода из представления репозитория
-
На GitHubперейдите на главную страницу репозитория.
-
Над списком файлов щелкните Code.
-
Щелкните Скачайте ZIP-файл.
Скачивание архивов исходного кода из выпуска
-
На GitHubперейдите на главную страницу репозитория.
-
Справа от списка файлов щелкните Выпуски.
-
Прокрутите вниз до раздела "Активы" выпуска.
-
Чтобы скачать исходный код, щелкните Исходный код (zip) или Исходный код (tar.gz).
Скачивание архивов исходного кода из тега
-
На GitHubперейдите на главную страницу репозитория.
-
Справа от списка файлов щелкните Выпуски.
-
В верхней части страницы "Выпуски" щелкните Теги.
-
Чтобы скачать исходный код, нажмите кнопку **** или 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/aef66c462abe817e3aad91d97aa782a1e2ad2c7.zip |
Примечание. Вы можете использовать url-адреса .zip
.tar.gz
, указанные выше, для запроса zipball или tarball соответственно.
Стабильность архивов исходного кода
Архивы исходного кода создаются по запросу, кэшируются в течение некоторого времени, а затем удаляются. Если тот же архив запрашивается еще раз в будущем, он будет повторно создан. Важно понимать, какие гарантии : GitHub делает архивы исходного кода.
- Архив ИД фиксации всегда будет иметь одинаковое содержимое файла при каждом запросе, если ИД фиксации по-прежнему находится в репозитории, а имя репозитория не изменилось.
- Так как ветви и теги могут перемещаться в разные ИД фиксации, будущие скачивание архива может иметь другое содержимое, чем скачанные ранее архивы одной ветви или тега. Если ветвь или тег по-прежнему указывает на ту же ИД фиксации, он будет иметь то же содержимое файла.
- Точные параметры сжатия, используемые для создания zipball или tarball, могут меняться с течением времени. Извлеченное содержимое не изменится, если ветвь или тег не изменяется, но внешний сжатый архив может иметь другой макет байтов. GitHub даст по крайней мере шесть месяцев уведомления перед изменением параметров сжатия.
- Имя репозитория является частью структуры каталогов в архиве. Таким образом, если имя репозитория изменится, имя корневого каталога также изменится.
Если вы полагаетесь на стабильность архивов исходного кода для воспроизведения (обеспечивая всегда одинаковые файлы внутри архива), рекомендуется использовать REST API архивов с ИД фиксации для :ref
. Использование ИД фиксации гарантирует, что вы всегда получите одно и то же содержимое файла в архиве, и вы будете защищены от репозиториев перезаписи тегов или перемещения голов ветвей.
Если вы полагаетесь на стабильность архивов для безопасности (например, чтобы убедиться, что вы не пытаетесь распаковать вредоносный созданный файл), рекомендуется использовать выпуски вместо использования исходных скачиваемых файлов. Дополнительные сведения см. в разделе Сведения о выпусках.
Для создания и отправки этих файлов в процессе выпуска можно использовать что-то подобное сторонним действием GitHub. REST API ресурсов выпуска можно использовать позже для их извлечения.