Question

Je travaille à trouver comment mieux travailler dans mon propre repo pour le code personnalisé tout en intégrant avec la bibliothèque d'un fournisseur (dans ce cas, Magento). Dans mon cas, je ne vais pas besoin de pousser patches au vendeur (bien que ce serait un grand avantage de côté).

Je l'ai regardé dans le sous-module git et sous-arbre git. Je ne pense pas que git sous-module fonctionnera pour ce que je dois. Magento a le type de structure d'arborescence suivante:

/app
  /code
     /community *
     /core
     /local *
  /design
     /adminhtml
     /frontend
        /base
        /yourtheme *
/lib
  /Zend
  /Varien
  /yourlib *
/js
  /yourjs *
  /varien
  /mage

Utilisation de sous-module git semble fonctionner le mieux dans des dossiers séparés (par exemple / est votre application et / fournisseur / magento est le sous-module). Cependant, avec ce degré d'entrecroisement, un sous-module ne semble pas être une bonne solution. Ai-je tort à ce sujet?

Cela me laisse avec sous-arbre git. Mais avec sous-arbre git, la même hypothèse de base (que la branche du vendeur est, comme le laisse entendre le nom, un sous-arbre) ne tient pas vrai. Magento est pas un sous-arbre, mais la bibliothèque de base que mon projet unique au sein. Est-ce exact?

Si ces deux méthodes de git ne fonctionnent pas, y at-il d'autres ceux que je devrais savoir qui faire ce que je suis en train d'accomplir?

La dernière option que je suis réticent à poursuivre est d'avoir une prise en pension que je puis juste appliquer sur les derniers changements de fournisseur (tiré à partir d'un tarball). Je suis réticent à poursuivre ce que je pense que d'avoir des informations de journal du fournisseur (tiré de https: // github .com / magentomirror / magentomirror ) serait grandement utile pour trier les nouvelles mises à jour et déterminer quels changements me ont affecté.

Était-ce utile?

La solution

Je pense que vous pouvez utiliser l'outil modgit pour cela: https://github.com/jreinke/modgit Vous serez en mesure de cloner certains modules Magento avec commande clone modgit. Un exemple complet est disponible ici: http: / /www.bubblecode.net/en/2012/02/06/install-magento-modules-with-modgit/

Autres conseils

non de ces méthodes que vous mentionnez vraiment travaillé pour moi ...

Actuellement, je suis en utilisant poire pour installer et gérer les mises à niveau de noyau et les modules de la communauté, et engageant toute la structure de magento dans le dépôt git avec le fichier .gitignore suivant:

# Dynamic data that doesn't need to be in the repo
/var/*
/media/*
/downloader/pearlib/cache/*
/downloader/pearlib/download/*
/app/etc/use_cache.ser
local.xml

et en utilisant la commande shell suivante pour garder les répertoires vides:

for i in $(find . -type d -regex ``./[^.].*'' -empty); do touch $i"/.gitignore"; done;

Une autre idée que je pensais à ce sujet est de donner un essai un modèle de branchement fournisseur, mais je crains qu'il ajoutera des maux de tête supplémentaires en particulier dans le cas de certains grands arbres de dépendance, par exemple pour la réelle efficacité, il est doit être intégré au niveau de poire , à savoir tous les modules téléchargés doivent être automatiquement ramifiés, donc, pour l'instant, il est semble bon d'utiliser avec des extensions acquittées.

J'a été tenté de tirer le sujet sur le forum magento, mais aussi ne pas obtenu des réponses: http://www.magentocommerce.com/boards/viewthread/78976/

Mise à jour:

Magento Composer Installer -. Dignes d'intérêt

Composer devenir outil de gestion de la dépendance standard pour PHP, donc, vous aurez beaucoup plus d'avantages en utilisant avec dans votre projet.

Vous ne aurez pas besoin, ni engager des extensions de branche, des thèmes, des libs dans votre arborescence du projet, mais ont toujours des versions appropriées et dépendances.

Merci.

Votre question est plus sur son sous-module git vs sous-arbre en général. Je ne peux pas penser à toutes les spécificités Magento qui influenceront la comparaison. Très probablement, vous êtes au courant des stratégies sous-arbre fusion que je recommande, mais je ne sais pas pourquoi avez-vous besoin de fusionner en un premier lieu.

Les meilleures pratiques de fusion est de l'éviter et l'architecture Magento est suffisamment souple pour lui permettre. Suivez simple ensemble de règles:

  1. Évitez patcher le code fournisseur.
  2. Si vous ne pouvez pas. Avant de faire un patch, d'emballer vos modifications envisager dans un module Magento personnalisé et en le plaçant dans app / code / local.

Si votre modification concerne le code PHP:

  1. Vous pouvez bénéficier de POO et de minimiser les changements à une certaines méthodes seulement. Étendre les classes respectives.
  2. Ecraser classe respective à l'aide du mécanisme de configuration Magento dans config.xml.
  3. Si précédente est impossible à réaliser -. Placez vos modifications (classes patchés) dans app / code / local, à savoir plus dans l'ordre include_path afin que votre code sera efficacement utilisé à la place du code du fournisseur

Si vos préoccupations de modification PHTML Templating -> utilisation mécanisme de mise en page Magento pour remplacer le phtml du fournisseur avec le vôtre. Une personnalisation de la conception proprement dite exigera des activités de modification lourdes et les travaux de mise en page de toute façon.

Si vos préoccupations de modification JS -.> Encore, mises en page d'utilisation pour relier le code placé dans js ou dossiers de la peau

Je pense que vous parlez de choses différentes.

Les suggestions de Yauhen sont tout à fait correct. Vous pouvez accomplir tout cela dans git, et vous n'avez pas besoin ou sous-modules sous-arbres.

J'ai sur le même fichier que vous .gitignore, de sorte que l'air bien.

Je l'ai fait un writeup sur la façon dont nous utilisons git comme une équipe de gestion de magasins magento ici, ce sera peut-être utile pour vous:

Meilleures pratiques pour le déploiement Magento

Quilt comme flux de travail

Ceci est exactement ce qui a déjà été fait avec couette, que vous faites de nos jours avec Stacked Git (sur haut de Git), Mercurial Queues (au-dessus de Hg) ou Loom (au-dessus du Centre).

L'idée est de maintenir une série de patchs empilés les uns sur les autres, qui s'applique aux fichiers versionnés par le SCM (potentiellement créer de nouveaux fichiers, ce qui serait le cas pour vous). A tout moment, vous pouvez sauter la pile entièrement, mettez à jour le code amont, alors tous vos rempiler patches un par un. Si tous appliquent proprement, il se fait automatiquement, sinon, le processus s'arrête au premier patch défectueux.

pur Git

Ce qui suit vous considère clonez une prise en pension Git Magento. S'ils ne pas utiliser Git, vous pouvez toujours le faire en première traduction de leur histoire à Git, par exemple avec sur mesure .

Rebase

Git, il est facile d'appliquer de nouveau une partie de l'histoire d'un autre point de départ, par rebasage . Donc, vous pouvez aussi simplement Magento clone, travailler votre code et, lors de la mise à jour Magento, faire de la dernière révision propre Magento puis rebasage votre travail sur la nouvelle révision propre Magento.

Vous suivez essentiellement le flux de travail avec des outils Quilt Git normaux.

Branches

Encore une autre façon de le faire serait d'utiliser simplement des branches. Vous clone repo, branche de Magento de lui, faites votre truc, et quand vous allez chercher les dernières révisions de Magento, vous fusionnez les deux branches. Il est juste DVCS typique de workflow , envisagez-vous comme Magento developpeur travailler sur une branche de fonctionnalité qui ne fera jamais à la branche principale ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top