поддержка Live-версии сайта с минимизацией JS и CSS - PullRequest
0 голосов
/ 11 ноября 2010

Я собираюсь перечислить несколько быстрых фактов для лучшего понимания моей цели.

Разрабатываю проект, назовем его AAA :

  • На моем веб-сервере (в центре обработки данных) у меня есть AAA SVN-репозиторий.
  • На том же веб-сервере у меня есть проверочная версия AAA ( живая версия - общедоступный html)
  • У меня дома вторая проверка , где я разрабатываю проект AAA

Каждая новая версия, которую я разрабатываю дома, я фиксирую изменения на веб-сервере , а затем обновляет живую область.

Теперь я хочу представить минимизированные версии JS и CSS.

После небольшого поиска в Google вы можете подключиться к SVN-хукам. pre-commit и post-commit hooks.

Вот что я сейчас имею в виду:

  • создать хук после фиксации
  • каждый раз, когда я фиксирую новую версию, ловушка post-commit запускает скрипт для:
    • SVN обновляет живую область веб-сервера
    • затем замените все файлы .css и .js на минимизированные версии

Это работает нормально для первого коммита. При втором коммите живое обновление SVN завершается неудачно, потому что .css и .js уже изменены (уменьшены) с первого коммита. конфликты.

РЕШЕНИЕ:

1 # Использовать экспорт SVN вместо обновления SVN для текущей версии. Это занимает много времени и возникают проблемы с удаленными файлами и т. Д. Решение ИСКЛЮЧЕНО.

2 # Заставить SVN обновить действующую версию AAA и игнорировать изменения (уменьшенные файлы из предыдущей ревизии). Это решение имеет смысл для меня, но я не нашел способа сделать SVN-обновление игнорирующим текущие изменения (минимизированные файлы). Возможно ли это с SVN? Я пытался SVN updade tf и не работает.

3 # Готовы выслушать ваше решение:)

Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 11 ноября 2010

Я не знаю, какая у вас среда, но вы можете использовать подход, используемый утилитой развертывания Capistrano .

Если ваша рабочая / производственная среда поддерживает мягкие / символические ссылки (такие как Linux), то вы делаете:

  • Создайте 2 каталога в вашем пути развертывания

    ~/path_to_site/current
    ~/path_to_site/releases
    
  • Установите ~ / path_to_site / current в качестве каталога, который обслуживается

  • Выполните экспорт SVN в каталог выпусков, например,

    ~/path_to_site/releases/mysite_1234567 (timestamp)
    
  • После завершения экспорта измените путь вашей мягкой ссылки для текущего /, чтобы он указывал на самый последний выпуск, например,

    ~/path_to_site/current -> ~/path_to_site/releases/mysite_1234567
    

Преимущества этого подхода:

  • Ваш сайт не изменяется в процессе экспорта. например, в вашем текущем процессе, когда вы делаете svn-обновление, есть момент, когда ваш сайт обновляется только частично. Если бы кто-то посетил ваш сайт в этот момент, кто знает, что он получит.
  • Каждая обновленная версия сайта является 100% чистым экспортом. Не связывайтесь с файлами, которые должны были быть удалены или изменены из-за процесса минимизации.
  • У вас очень простой механизм отката к предыдущей версии - просто укажите текущую / символическую ссылку на предыдущую директорию в выпусках /
  • В своем текущем подходе к выполнению обновления SVN вы делаете общедоступными все папки .svn и содержащуюся в них информацию, поскольку они соседствуют с вашими общедоступными файлами. Это означает, что кто-то может получить информацию о том, где находится ваш репозиторий и т. Д. В целом, плохо иметь что-либо, кроме того, что вы хотите, чтобы люди могли иметь в ваших общих папках.

Такие инструменты, как Capistrano, помогают автоматизировать подобные процессы, но не обязательны. В любом случае, что-то подобное может быть выполнено с помощью ловушки после фиксации, в зависимости от вашей среды.

Следует также отметить, что не все конфигурации сервера позволят вам использовать символические / программные ссылки в путях папок, которые обслуживаются.

0 голосов
/ 12 ноября 2010

Это хорошо. Экспортировать как версию, т.е. добавление временной метки, например. Затем управление живой версией с помощью символической ссылки. Я использую Linux, так что все в порядке.

Тем временем я нашел способ обойти 2 #, описанный в первом посте:

Первый - CheckOut - используйте svn checkout в качестве живой версии - затем сожмите файлы .js и .css Секунда к N - Обновление - svn reverve для всех файлов .css и .js - svn update - затем сожмите файлы .js и .css

Обратный svn удалит сжатые файлы, чтобы разрешить обновление svn без конфликтов.

Этот путь быстрее, но я думаю, что последую вашему подходу.

0 голосов
/ 11 ноября 2010

Оформить заказ инструментов непрерывной интеграции, таких как Hudson или Cruisecontrol. Эти инструменты имеют возможность контролировать хранилище с заданной частотой и будут выполнять желаемую задачу после проверки. Это может удовлетворить ваши потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...