March 17, 2010
Для любого специалиста в сфере веб-разработок CMS – внужденное зло. Хотите вы этого или нет, рано или поздно вы с столкнетесь системами управления сайтом, и не факт, что вам понравится эта встреча.
UMI.CMS – возможно, меньшее из зол, с которым мне доводилось встречаться. Сомневаюсь, что стоит обсуждать ее достоинства и недостатки (о ее достоинствах немало написано на официальном сайте, а недостатки при желании можно найти самому). Стоит, правда, отметить сложность ее переноса и хранения: базу практически не перенести вручную, а копирование файлов или поштучный коммит (не будем же мы коммитить все!) вызывает у многих нервный тик. Если с базой дело обстоит сложнее, то правильный коммит и перенос сайта можно обеспечить. С помощью shell-скрипта, например.
Правильный shell-скрипт должен выполнять две вещи
- добавлять в svn ignore те файлы, которые относятся к системным и коммитить которые нет смысла (могут “затереться” при обновлении);
- выполнять svn add для тех файлов, которые будут полезны.
Пошевелив мозгами, я составил список ненужных файлов (системные файлы, неизменяемые шаблоны, некоторые конфигурационные файлы, скрипты, стили и картинки) и написал вот этот скрипт :
svn add -N ../web/
svn propset svn:ignore 'cache
dev
docs
dtd
errors
install
images_install
man
manifest
packages
pwindows
scriptaculous
smu
static
tinymce
updates
xmldb
xsl
autothumbs.php
cacheControl.php
captcha.php
clusterCacheSync.php
compile.php
config.php
cron.php
def_macroses.php
edit_old_addresses.php
errors.php
index.php
gw.php
index.php
install.php
instcli.php
instunpack.php
lib.php
mysql.php
releaseStreams.php
sbots.php
security.php
standalone.php
static_banner.php
streams.php
system.php
readme.txt
whatsnew.txt
*.ucp
*.log
debug' ../web/
svn add -N ../web/css/
svn propset svn:ignore 'cms' ../web/css/
svn add -N ../web/js/
svn propset svn:ignore 'client
cms
smc
script.js
multiupload.js
lLib.js
guest.js
eazy.php
cross-domain.php
cssread.php
cifi.js' ../web/js/
svn add -N ../web/images/
svn propset svn:ignore 'icons
cms' ../web/images/
svn add -N ../web/styles/
svn propset svn:ignore 'common' ../web/styles/
svn add -N ../web/styles/skins/
svn propset svn:ignore '_picasa' ../web/styles/skins/
svn add -N ../web/styles/skins/full/
svn propset svn:ignore 'js
css
common
calendar
images
main.xsl
empty.xsl
common.xsl' ../web/styles/skins/full/
svn add -N ../web/styles/skins/mac/
svn propset svn:ignore 'js
css
common
calendar
images
main.xsl
empty.xsl
common.xsl' ../web/styles/skins/mac/
svn add -N ../web/styles/skins/simple/
svn propset svn:ignore 'js
css
common
calendar
images
main.xsl
empty.xsl
common.xsl' ../web/styles/skins/simple/
svn add -N ../web/classes/
svn propset svn:ignore 'RSS
backupModel
baseXmlConfig
cacheEngines
cifi
componentInstaller
cron
csv
dataModel
drivers
eventsModel
exceptions
garbageCollector
hierarchyModel
languageMorph
logger
manifest
matches
moduleInstaller
patterns
permissionsModel
ranges
searchModel
streams
systemCore
translit
umiBasket
umiCaptcha
umiConversion
umiDate
umiDirectory
umiDistr
umiFile
umiFilter
umiImportRelations
umiMail
umiMessages
umiModuleDataExporter
umiModuleDataImporter
umiOpenSSL
umiPagenum
umiSubscriber
umiXmlExporter
umiXmlImporter
xmlTranslator
xslTemplater' ../web/classes/
svn add -N ../web/classes/modules/
svn propset svn:ignore 'autoupdate
backup
config
data
seo
stat
webo
system.php
iDef_module.php
iBaseModuleAdmin.php
forms.php
def_module.php
core.php
baseModuleAdmin.php' ../web/classes/modules/
Алгоритм работы с этим скриптом следующий:
1. Создать проект в SVN
2. Счекаутить пустой проект в папку
3. Положить скрипт в папку (пока не трогать, пригодится позже).
4. Создать папку web в корне проекта (это будет наш DOCUMENT_ROOT) и установить туда UMI.CMS.
5. Выполнить скрипт
6. Закоммитить проект
Для выполнения shell-скриптов под Windows сгодится стандартная поставка cygwin с пакетом svn правильной версии.