Вопрос

Здесь несколько уместных вопросов:

  • Каков наилучший способ определить основные изменения и объединить их в модули?Есть ли бесплатная альтернатива http://www.fontis.com.au/mageaudit/ ?

  • Как насчет перехватов subversion / git с предварительной фиксацией, чтобы предотвратить фиксацию основных файлов?Вы вообще держите Magento core под контролем исходных текстов?

  • Как можно предотвратить внесение изменений в основные файлы по ошибке - возможно, с помощью плагина Sublime Text, который сообщает вам, изменяете ли вы основной файл?

  • Можно ли скопировать основные файлы в / local, чтобы внедрить событие отправки для наблюдателей?

...спрашиваю о ...друге.Да.

Это было полезно?

Решение

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

Но я думаю, есть несколько способов устранить / предотвратить это.Итак, просто поподробнее остановлюсь на ваших основных моментах.

Поиск модификаций

Идентифицировать изменения довольно просто, просто загрузите чистый эквивалентный релиз и выполните diff в соответствующих каталогах.

diff -r ./app/code/core ./clean_mage/app

Вы можете найти более подробные рекомендации в Ответ на отладку Magento.

Предотвращение изменений

Вы могли бы предотвратить внесение изменений в ядро, просто изменив права доступа к файлам, сделав их доступными только для чтения / выполнения

chmod -R 555 ./app/code/core

Или пойти еще дальше и сделать их неизменяемыми

chattr +i -R ./app/code/core

Отмена изменений в режиме реального времени

Если вы используете Git, и ваше ядро находится под контролем версий, вы могли бы добавить перехват только для проверки ядра перед фиксацией

.git/hooks/pre-commit

#!/bin/bash
git checkout /home/path/public_html/app/code/core

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

На самом деле, это последнее средство.Путь включения PHP (это не относится к Magento) не позволит вам дважды объявлять один и тот же класс.

Местное > Сообщество > Ядро

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

Для abstract/final классы - у вас нет особого выбора, но для большинства других задач вы обычно можете переписать класс и объединить его в модуль в community

Другие советы

Просто дополнение к сообщению Сонасси. Вы также можете использовать крюк SVN (если вы используете SVN), чтобы проверить свойство только для чтения и отказаться от изменений в определенных папках

Смотрите это ->http://www.cita.utoronto.ca/~shirokov/soft/svn-moks/svn-read-only/pre-commit

Вот как я подхожу к тем же вопросам:

  1. Если я унаследовал проект, который, как я подозреваю, имеет основные хаки, я сравню файлы с ванильным Magento. Иногда я буду делать это при обновлении магазина до более новой версии. Следующая команда удобна для сравнения файлов в двух каталогах:

    Diff -RQ Magento-Hacked Magento-1.7ish | grep "только в магоне"> chacks.txt

  2. В настоящее время я использую SVN по разным причинам. У меня есть ванильные версии Magento, установленные в репо. Каждая версия находится на собственном филиале. Для новых проектов я включаю избранную отделение Magento в качестве внешнего SVN. я использую Модман упаковать любые расширения и темы в отдельные модули. Часто используемые расширения могут быть включены в качестве дополнительных внешних SVN в моем проекте. Я только посвятил свой файл проекта IDE, каталог Modman и магазин etc Справочник (перемещен выше HTTPDOCS, PATH обновлен в index.php) в репо моего проекта.

  3. Включив основные файлы магазина во внешнее SVN (с чтением только Perms). Я не могу внести какие -либо изменения в основные файлы.

  4. Не копируйте весь файл (если возможно). Расширьте класс Core в Local и просто скопируйте метод, который вам необходимо изменить.

Это только мой подход к этим проблемам, который подходит как мои собственные, так и рабочие процессы моего коллеги.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top