Контроль версий коробочных модулей HostCMS

При разработке на HostCMS сайтов и модулей, имеющих достаточное количество нестандартного функционала и активно использующих API системы, часто возникает необходимость тщательного отслеживания изменений системы. Для контроля изменений мы собрали все версии стандартных модулей системы в одном репозитарии, это позволит быстро внедрять новые возможности и исправлять ошибки после обновлений.

Обновления HostCMS

Система HostCMS обновляется автоматизированно, пользователям периодически нужно заходить в ЦА в раздел обновлений, получать очередной апдейт и радоваться жизни. Это большой плюс HostCMS, пользователи получают новые функции и исправление каких-то недочетов в считанные клики.

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

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

В открытом доступе репозитария HostCMS нет, но механизм обновления системы, при котором все изменения поочередно накладываются друг на друга, намекает на то, что его можно добыть самим. Можно взять раннюю версию HostCMS и, последовательно устанавливая обновления и выполняя коммиты, получить репозитарий со всеми нужными данными. Конечно шаг изменений будет достаточно длинным, так как система от версии к версии может сильно изменяться и распознать в каждом коммите отдельное улучшение и исправление будет проблематично, но это лучше чем ничего.

Репозитарий

Мы взяли самую раннюю версию системы, доступную для скачивания с официального сайта, это версия 6.1.0, добавили в исключения все файлы, кроме директории modules, и последовательно установили каждое обновление. А для удобной навигации каждому обновлению поставили в соответствие именованный коммит и метку.

После репозитарий был загружен на Гитхаб, к каждой метке добавлен официальный релиз-ноутс, чтобы можно было более конкретно идентифицировать версию системы, и значение константы HOSTCMS_UPDATE_NUMBER, ее можно использовать в коде для проверки наличия той или иной функциональности в текущей версии системы.

Репозитарий доступен по этой ссылке: https://github.com/maximzasorin/hostcms-framework

Из репозитария специально были исключены все файлы кроме директории modules, чтобы оставить в нем только классы и не смешивать с клиентским кодом, в котором эти классы используются, например, в нем нет исходного кода ЦА, его отслеживать не получится.

Использование

Как правило, если вы разработчик модуля для HostCMS, то вам приходится достаточно тесно интегрировать его с системой, использовать методы API, навешивать наблюдатели и т.д., и случается так, что в одной версии системы некоторый метод работал так, а в новой стал работать иначе. Полностью охватить разницу между двумя версиями поможет репозитарий, можно переключиться на нужную версию, посмотреть как код работал там, и, используя константу HOSTCMS_UPDATE_NUMBER, внедрить поддержку сразу двух версий.

Репозитарий может помочь в поиске и объяснении ошибок, возникающих после обновления системы. Конечно, грамотно используя API системы, такие ошибки можно свести практически на нет, но вот реальная ситуация. В одном из наших проектов мы использовали событие ImportShopItems.onAfterFindByMarking для усовершенствования импорта товаров, у него довольно странное название, и, наверное, стоило ожидать, что в последующих версиях оно будет заменено. Так и случилось, в версии 6.5.7, событие было заменено на более корректное Shop_Item_Import_Csv_Controller.onAfterFindByMarking, и наш код перестал работать, проблема в итоге была найдена, а репозитарий помог полностью удостоверится в причинах поломки. Вот событие в версии 6.5.6, а вот уже в версии 6.5.7.

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

comments powered by Disqus


  • очень удобная вещь, респект!

    • Спасибо, стараемся.

Следующий "Партнерская программа" К списку Предыдущий "Подсветить элемент на странице"