Повторно использовать GIT_WORK_TREE в обработчике post-receive для rm нескольких файлов

Я использовал этот «учебник» для настройки среды DSP: http://toroid.org/ams/git-website-howto (Да, я не у меня есть T).

Мой рабочий процесс очень прост:

  1. Разработка локально ( D )
  2. Зафиксировать несколько вещей
  3. Зафиксировать больше вещей
  4. Нажать на постановку (и Github) ( S )
  5. Тестировать новый код на промежуточном этапе
  6. Отправить в производство ( P )

Мой код содержит файлы CSS, которые минимизированы моим кодом, а затем сохраняется в 1 файл: all.css . Я отключил эту опцию локально, поэтому мне не нужно вручную удалять all.css каждый раз, когда я меняю свой CSS. И в промежуточной, и в производственной среде они должны кэшироваться как можно скорее (поэтому создайте all.css из отдельных файлов CSS).

Проблема в том, что каждый раз, когда я нажимаю, мне нужно удалить all.css all.js - точно такая же история), чтобы увидеть изменения (и правильно протестировать).

Из учебника я сделал пост-получение ], который проверяет изменения в определенной папке (где Apache читает код).

Моя текущая ловушка post-receive :

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

Я хочу повторно использовать $ GIT_WORK_TREE чтобы удалить два файла из $ GIT_WORK_TREE ( www / all.css и www / all.js ), но я не могу ... Нет var $ GIT_WORK_TREE в следующей строке.

Итак, я изменил его на это, но мне это не нравится, особенно если я хочу сделать с ним больше в будущем:

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
rm /var/www/www.example.org/www/all.css
rm /var/www/www.example.org/www/all.js

$ GIT_WORK_TREE НЕ используется повторно вот так.

Вещи, которые я пробовал, не работают:

GIT_WORK_TREE=/var/www/www.example.org git checkout -f
rm $GIT_WORK_TREE/www/all.css
rm $GIT_WORK_TREE/www/all.js

rm: файл не существует e tc (/www/all.css) ( $ GIT_WORK_TREE пусто)

GIT_WORK_TREE=/var/www/www.example.org
git checkout -f

фатальный: эта операция должна выполняться в дереве работ

GIT_WORK_TREE=/var/www/www.example.org
cd $GIT_WORK_TREE
git checkout -f

фатальный: не в репозитории git (или любом другом .. ...)

Думаю, моя проблема в том, как работает Bash, как и в том, как работает GIT =)

11
задан Rudie 9 July 2011 в 19:25
поделиться