У нас есть веб-приложение, которое содержит кучу контента, который может изменить системный оператор (например, новости и события). Время от времени мы публикуем новые версии программного обеспечения. Программное обеспечение помечается и хранится в subversion. Тем не менее, я немного не понимаю, как лучше управлять версиями контента, который может быть изменен независимо. Какие механизмы используют люди, чтобы убедиться, что контент хранится и имеет версию таким образом, чтобы сайт можно было воссоздать или, по крайней мере, контролировать версию?
Как вы CM приложение с управляемым содержимым
Ответы (3)
Когда вы идентифицируете два набора файлов, которые имеют свой собственный жизненный цикл (программные файлы с одной стороны, «новости и события» с другой), вы знаете, что:
- вы не можете версионировать их вместе одновременно
- не стоит ставить один и тот же ярлык
Вам нужно сохранить файлы «новостей и событий» отдельно (либо в VCS, либо в БД, как предлагает Ян Джейкобс, либо в CMS — системе управления контентом) и найти способ связать их вместе (идентификатор, временная метка, мета-метка, ...)
Не забывайте, что вы говорите не только о двух разных наборах файлов с точки зрения жизненного цикла, но и о разных наборах файлов с точки зрения самой их природы:
Рассмотрим терминологию, введенную в этом вопросе SO "Является ли управление активами расширенным набором контроля версий" от С.Лотт
- файлы программного обеспечения: информация об инфраструктуре, то есть «представляющая обработку корпоративного информационного актива». Ваш код является частью этого актива и управляется VCS (системой контроля версий) в рамках дисциплины управления конфигурацией.
- «новости и события»: информация о предприятии, то есть данные (необрабатываемые); это часто делится между менеджерами контента и реляционными базами данных.
Так что не все должно заканчиваться в Subversion.
Храните все в БД и давайте каждой транзакции в БД временную метку. таким образом, вы можете хранить стандартные резервные копии БД и загружать содержимое сайта в любую дату, если произойдет худшее.
Я полагаю, что часть ответа зависит от того, какую CMS вы используете и как разработано ваше веб-приложение, но в целом я бы рассматривал такие данные, как новости или события, как «контент». Другими словами, это не часть вашего приложения — это данные, которые ваше приложение обрабатывает.
Конечно, между вашим кодом CMS и вашим кодом приложения будут проблемы с версиями. Вы можете управлять этим, определив интерфейс между ними. Лично я бы опубликовал данные в веб-приложении в виде XML, что дает вам возможность использовать XML-схему, чтобы точно определить, что CMS должна создавать и что веб-приложение должно обрабатывать.
Это должно означать, что большинство изменений в веб-приложении могут быть внесены без соответствующего изменения в отображении данных. Когда этого требуют изменения функциональности, вы можете создать новую версию схемы и продолжить работу. В этом сценарии я бы проверил схему с кодом веб-приложения, но YMMV.
Это непросто, и это снова усложняется, если вам нужны дополнительные поля данных в вашей CMS. Ожидайте планирования довольно сложного процесса выпуска (также в зависимости от того, насколько сложен ваш сценарий Dev-Test-Acceptance-Production).
Если вы не используете CMS, вам следует подумать об этом. (Конечно, если операция очень маленькая, она все же может попасть в категорию, когда допустимо выполнение ее вручную.) Простой ввод необработанных данных в систему управления версиями не решает проблему — вам нужно иметь возможность контролировать формат, в котором ваши данные публикуются в веб-приложении. Почти наверняка этот формат должен быть предназначен для использования программным обеспечением и, следовательно, обычно не подходит для ручного редактирования теми людьми, которые пишут новости или события.