Удалите ненужные файлы с помощью пост-получения - PullRequest
0 голосов
/ 31 мая 2018

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

Однако я использую Kirby CMS , который является файловой CMS,Это означает, что любые ненужные файлы должны быть удалены.По сути, папка, в которой мой хук git checkout должен быть идентичен состоянию репо.

Вот мой скрипт хука:

#!/bin/sh
git --work-tree=/var/www/html/myrepo --git-dir=/var/repo/myrepo checkout -f
cd /var/www/html/myrepo/assets
npm install --production

Я читал о git clean, но, насколько я понимаю, его можно использовать в репозиториях с рабочим деревом, которого нет в моем голом репо.

Как мне это сделать?

1 Ответ

0 голосов
/ 31 мая 2018

Во-первых, после запуска git-checkout в сценарии перехвата у вас do есть рабочее дерево, оно находится в отдельном каталоге от простого репозитория.

Во-вторых, сценарий, который выhave будет удалять файлы , которые находятся под контролем git , когда они удаляются из репозитория (например, с git rm).

Тем не менее, есливы также хотите удалить все локально созданные файлы из вашего рабочего дерева, вы можете сделать это, добавив git clean к тому же скрипту хука после проверки:

git --work-tree=/var/www/html/myrepo --git-dir=/var/repo/myrepo clean -fd

, где -f означает force и -d означает также удаление каталогов (но прочитайте руководство , прежде чем делать это в любой реальной среде).Чтобы проверить это, вы можете задать параметр -n (пробный запуск), который не будет ничего удалять, а просто печатать то, что он удалит, например:

git --work-tree=/var/www/html/myrepo --git-dir=/var/repo/myrepo clean -nd

Edit: , как прокомментировано@jthill, git-clean имеет дополнительные параметры (-e, -x, -X) для выборочного удаления неотслеживаемых файлов на основе комбинаций данного шаблона и .gitignore (подробности см. в руководстве ).).

...