Скрипт позволяет упаковать в 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.