Создать git архив поддерева со всеми изменениями в zip - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь создать zip-файл, содержащий все файлы, измененные или зафиксированные, в zip-архиве. Причина этого в том, что у нас есть загружаемый пример проекта для клиентов. Когда в примере кода происходят какие-либо изменения, нам нужно обновить ZIP-файл, который существует в общедоступном веб-приложении.

Я подумал, что было бы неплохо использовать git pre-commit hook для этого. Тем не менее, я довольно новичок в Git и не знаю сценариев оболочки. Я получил следующий скрипт предварительной фиксации для создания архива файлов, которые я хочу, в нужном месте:

! C: / Program \ Files / Git / usr / bin / sh.exe

REF_APP_PATH = "Источник / CodeExamples / DataServiceReferenceApp"

если git diff --cached --name-only | grep --quiet "$ REF_APP_PATH" то

echo "Обновление измененных файлов в DataServiceReferenceApp.zip"

git archive --format = zip --output = Source / WebApi / Api / Downloads / test.zip HEAD: Источник / CodeExamples / DataServiceReferenceApp фи

выход 0

Проблема в том, что все файлы взяты из предыдущего коммита, а не измененных файлов, которые регистрируются. Я хочу заархивировать старое и новое в правильной древовидной структуре, затем зафиксировать измененное и обновленный zip.

У кого-нибудь есть идеи, как этого добиться?

1 Ответ

0 голосов
/ 11 января 2019

Вместо этого вы должны использовать хук post-commit, просто переименуйте хук.

После завершения всего процесса фиксации запускается ловушка после фиксации. Он не принимает никаких параметров, но вы можете легко получить последний коммит, запустив git log -1 HEAD. Обычно этот скрипт используется для уведомления или чего-то подобного.

Когда вы используете ловушку перед фиксацией, ваши изменения все еще находятся в индексе, а HEAD по-прежнему указывает на последний завершенный коммит (вы можете получить свои изменения с помощью git diff-index --cached HEAD).

Сначала выполняется ловушка перед фиксацией, прежде чем вы даже наберете сообщение о фиксации.

...