Признания основного модификатора


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

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

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

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

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

...просит a...друг. Да.

Author: nukala satish, 2013-02-06

3 answers

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

 5
Author: Ben Lessani - Sonassi, 2017-04-13 12:54:59

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

Смотрите это -> http://www.cita.utoronto.ca /~широков/мягкий/svn-крючки/svn-только для чтения/предварительная фиксация

 1
Author: Istvano, 2013-02-06 17:59:26

Вот как я подхожу к тем же проблемам:

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

    Разница -rq взломанный magento magento-1.7ish|grep "Только в взломанном magento"> hacks.txt

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

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

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

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

 0
Author: rbaker86, 2013-02-06 16:37:35