Question

Quelques questions pertinentes ici:

  • Quelle est la meilleure façon d'identifier les changements fondamentaux et les travailler en modules? Y at-il une alternative à http://www.fontis.com.au/mageaudit/ ?

  • Qu'en est-subversion / git pre-commit crochets pour éviter commits aux fichiers de base? Gardez-vous Magento coeur sous contrôle de source du tout?

  • Comment peut-on empêcher la modification de fichiers de base par erreur - peut-être un plugin Sublime Text qui vous indique si vous modifiez un fichier de base

  • Est-il correct de copier des fichiers à base / local pour injecter un événement d'expédition des observateurs?

... demander un ... ami. Oui.

Était-ce utile?

La solution

Je ne peux pas dire que nous ayons jamais allés à tout pour l'empêcher - que nous ne faisons pas tout simplement. Ou pire des cas (les elfes Underpant changé votre code de base) - vous le voyez sur la prochaine git commit que vous émettez.

Mais je crois qu'il ya quelques façons de nettoyer / éviter que cela arrive. Il suffit donc d'élaborer sur vos points de balle.

Trouver des modifications

L'identification des changements est assez facile, il suffit de télécharger une version équivalente propre et effectuer une diff sur les répertoires respectifs.

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

Vous pouvez trouver un plus plus de conseils dans la réponse débogage Magento .

Prévention des modifications

Vous pourriez éviter des modifications au noyau tout en modifiant les permissions de fichiers, faire lire / exécuter uniquement

chmod -R 555 ./app/code/core

Ou aller plus loin et de les rendre immuables

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

modifications Défaire en temps réel

Si vous utilisez Git, et votre noyau est sous contrôle de version, vous pouvez ajouter un crochet juste à la caisse du noyau avant une commettras

.git/hooks/pre-commit

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

Utilisation locale

Son dernier ressort vraiment. Include_path PHP (ne est pas une chose Magento) vous empêcher d'être en mesure de déclarer la même classe deux fois.

  

Local> Communauté> base

Ainsi, le moment où vous ajoutez une classe à local, le fichier correspondant respectif ne sera pas lu de nulle part ailleurs. Donc, vous devez copier dans tout le contenu du fichier.

Pour les classes de abstract/final - vous n'avez pas beaucoup de choix, mais pour la plupart des autres tâches, vous pouvez généralement réécrire la classe et regrouper dans un module dans community

Autres conseils

Juste un ajout au poste de Sonassi Vous pouvez également utiliser un crochet de SVN (si vous utilisez svn) pour vérifier la propriété en lecture seule et de refuser les fichiers de changement dans certains dossiers

voir ceci -> http: //www.cita. utoronto.ca/~shirokov/soft/svn-hooks/svn-read-only/pre-commit

Ceci est ma façon d'aborder les mêmes questions:

  1. Si je hérite d'un projet que je suspectez hacks de base, je vais comparer les fichiers contre la vanille Magento. Je vais parfois faire lors de la mise à niveau d'un magasin pour une version plus récente. La commande suivante est à portée de main pour comparer les fichiers dans deux répertoires:

    diff -rq magento-piraté magento-1.7ish | grep "Seulement dans magento-piraté"> hacks.txt

  2. J'utilise actuellement SVN pour diverses raisons. Je versions vanille de Magento mis en place dans une prise en pension. Chaque version est sur la branche propre est tout. Pour les nouveaux projets, j'entend une branche Magento choisie comme externe SVN. J'utilise Modman pour emballer des extensions et des thèmes dans des modules séparés. Souvent les extensions utilisées peuvent être inclus externals SVN supplémentaires dans mon projet. Je commets que mon dossier de projet IDE, répertoire Modman et le répertoire etc du magasin (déplacé au-dessus httpdocs, chemin mis à jour index.php) au repo de mon projet.

  3. En incluant un fichiers de base de magasin dans un externe (SVN en lecture seule perms). Je ne peux pas engager des modifications apportées aux fichiers de base.

  4. Ne pas copier le fichier entier (si possible). Étendre la classe de base au niveau local, et il suffit de copier la méthode que vous devez modifier.

Ceci est juste ma façon d'aborder ces problèmes qui convient aussi bien pour moi-même et les flux de travail de mon collègue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top