>_ IzzyLab

Практическое задание

Исключи каталог из git archive

средне

В /root/repo есть файл build.txt и каталог secret/ с файлом secret/keys.txt.

Сделай так, чтобы каталог secret/ не попадал в архив, создаваемый через git archive, при этом build.txt в архиве оставался. Для этого добавь в репозиторий файл .gitattributes с атрибутом export-ignore для secret/ и закоммить его (архив читает атрибуты из указанной ревизии, поэтому изменения должны быть в коммите).

Что потренируешь:
  • git archive
  • gitattributes
  • export-ignore
  • экспорт релиза

Разбор темы

git archive собирает тарбол из содержимого указанной ревизии, а не из рабочего каталога. Какие пути исключить из экспорта, задаётся атрибутом export-ignore в файле .gitattributes (строка формата <путь> <атрибут>) — стандартный способ не тащить в релиз служебные и секретные файлы. Важный нюанс: атрибуты читаются из дерева той же ревизии, что архивируется, поэтому .gitattributes обязательно должен быть закоммичен — правки только в рабочем каталоге на архив не повлияют.

Что проверяется

  1. secret/ отсутствует в архиве
  2. build.txt присутствует в архиве

Как это выглядит