Скрипт позволяет упаковать в ZIP архив активную ветку git репозитория, для экономии места выделяемого под историю изменений.
- Нет необходимости хранить в истории изменений все архивы которые излишне раздувают размер директории
.git
храня всю историю изменения для не всегда необходимого архива - При коммите или отправке изменений на сервер, автоматически генерируется свежий архив с обновлённым кодом, очень подходит для заказчика который просит отправлять ему
zip
обновлённого кода
Архив должен быть добавлен в .gitignore
, иначе толку от такой автоматизации нет, одни проблемы.
Подключение хуков подробно описано на странице Хуки в Git.
Единственное отличие для установки git хуков на сервере, это необходимость сделать файл хука исполняемым. Для установки прав на исполнение необходимо перейти в директорию вашего репозитория и выполнить это команды:
# это пример, в вашем случае могут быть другие хуки, которые больше подходят именно вам
chmod +x .git/hooks/post-commit
chmod +x .git/hooks/post-receive
На удалённом сервере, больше всего подойдут хуки post-commit
и post-receive
. Почитать про них можно тут (Хуки в Git).
Для локального репозитория этот скрипт можно добавить в хук post-commit
, и получать свежий архив при каждом коммите, но, это излишние действия.
Для локального репозитория можно воспользоваться командой git-а в директории репозитория только когда это необходимо:
git archive <название-ветки> --format zip --output <название-архива>.zip
Предположим, что наш репозиторий имеет такую структуру файлов
└─ cool-project
├─ .githooks/
├─ marmelad/
├─ static/
├─ .gitignore
├─ .browserlist.rc
└─ .tarvis-yml
Нам необходимо упаковывать в zip
архив только необходимые файлы, т.к. многие из файлов заказчику могут просто не понадобится, или попросту есть файлы в которых содержаться какие-то данные дев-сервера.
Для этого необходимо создать файл .gitattributes
и указать в нём те файлы и директории, которые не нужны в создаваемом архиве.
Пример содержания .gitattributes
для предполагаемой выше структуры, с указанием файлов и директорий для исключения добавления их в создаваемый архив.
.githooks export-ignore
.gitignore export-ignore
.browserlist.rc export-ignore
.tarvis-yml export-ignore
В итоге, заказчик получит архив только с директориями marmelad
и static
.