Назад | Перейти на главную страницу

объединить файлы CMS в одном месте

У нас есть система, в которой мы используем индивидуальную CMS на одном из наших серверов. Данной CMS пользуются 30-40 клиентов. Большинство файлов для каждой клиентской CMS одинаковы (за исключением нескольких папок), поскольку каждый раз, когда мы добавляем новую функцию / патч / исправление ошибки, мы развертываем его для всех клиентов. Мы хотим консолидировать эти файлы в одном месте, чтобы нам было легче развертывать в него изменения из SVN.

у нас есть такая структура для каждой учетной записи пользователя:

/home/user/public_html/css/
                      /images/
                      /admin/
                      index.php
                      etc ....

В этом примере папки css и images будут уникальными для каждого клиентского сайта, но все остальные файлы будут общими для всех. Не уверен, стоит ли нам искать символические ссылки / NFS / что-то еще ??

Краткосрочное решение:

Шаг

/admin/ 
index.php
etc...

сказать, /opt/cms

Создайте символические ссылки для файлов на новое место. то есть:

$ ln -s /home/user/admin /opt/cms/admin
$ ln -s /home/user/index.php /opt/cms/index.php

Написание сценария, выполняющего вышеуказанное для всех файлов и всех пользователей, должно быть тривиальным (с опытом). Если нет, задайте отдельный вопрос.

Затем используйте SVN в каталоге / opt / cms, на который все ссылаются.

Долгосрочное решение:

Полностью удалите пользовательские каталоги. Переместите приложение в одно место на веб-сайте (/ opt / cms или / var / www / cms и т. Д.). Используйте своего рода переписывание URL, чтобы example.com/~user/images/* указать на example/user/images/* и сделать /opt/cms/user/images каталог для каждого пользователя. Это решение означает, что пользователь ничего не знает об изменении.

В долгосрочной перспективе переписывайте CMS, чтобы скрыть разницу, или создайте новую структуру и дайте пользователям новый URL.

Я не знаком с макетом файла Bespoke, но думали ли вы о том, чтобы сделать это с помощью свойства svn: externals?

Он позволяет вам связать «внешний» репозиторий с местом внутри вашего текущего репозитория. Имея центральный репозиторий, в котором живет Bespoke (частный для вашей организации или общедоступные репозитории, если они его предлагают), связанный со всеми вашими репозиториями проектов, он упростит развертывание с SVN.

Когда вы запускаете svn update или svn commit внутри местоположения в ваших репозиториях, изменения будут извлечены или перенесены во внешние репозитории и все будут синхронизированы.

svn: externals поддерживает только папки до версии 1.5, поэтому убедитесь, что у вас версия 1.6 или выше, чтобы вы могли правильно связать такие вещи, как index.php, с вашим проектом (если только специальные файлы не могут быть помещены в один каталог).