2010-06-07 3 views
3

Je développe un site semi-compliqué qui est disponible dans plusieurs pays à la fois. Beaucoup d'efforts ont été déployés pour rendre les bases de code aussi similaires que possible les unes aux autres et, finalement, seul le fichier de configuration et certaines données de représentation diffèrent entre elles.Développer plusieurs projets très similaires à la fois

Chaque projet possède son propre référentiel SVN qui est directement mappé sur un site de test en direct. Cette partie est gérée par l'EDI que nous utilisons pour travailler.

Maintenant, je suis dans le besoin de créer une sorte de système pour garder tous ces projets en synchronisation.

La meilleure solution théorique à ce jour est de créer un script hook local qui mettrait le feu à commettre et

  1. Fusion les fichiers engagés du projet qui est engagé à tous les autres projets

  2. les télécharger en option sur le site en direct, remplaçant fichiers précédents

Le premier problème est que je ne sais pas comment je ferais la fusion - je suppose que ce serait comme appliquer un patch SVN ou quelque chose. La seconde est que si je ne veux pas télécharger les modifications sur le serveur live, comment pourrais-je synchroniser les bases de code en direct et local (remplacer les anciens fichiers?).

Je pose cette question, ne pas passer par le problème potentiellement énorme de résoudre les problèmes susmentionnés moi-même est que je crois que c'est une situation assez commune et quelqu'un aurait déjà une solution et autres peuvent bénéficier des réponses dans l'avenir. Enfin, je suis sur windows7, développez PHP et utilisez tortoiseSVN.

Répondre

9

Si ces projets sont identiques à l'exception de quelques fichiers, pourquoi ne pas configurer plusieurs projets (dossiers en SVN) dont chacun contient uniquement ces fichiers différents et un external reference à un projet (dossier) avec tous les éléments communs?

Quelque chose comme ceci:

 
--+ 
    +-+ project1 
    | +- => common 
    | +- config.file 
    | +-+ data 
    | +- blah 
    | +- wrxgl 
    | +... 
    +-+ project2 
    | +- => common 
    | +- config.file 
    | +-+ data 
    | +- blah 
    | +- wrxgl 
    | +... 
    +-+ project2 
    | +- => common 
    | ... 
    +-+ common 
    +- foo 
    +- bar 
    +- baz 
    +... 
2

À moins chaque site est sensiblement unique, je personnellement ne disposeraient que avait une branche avec des traductions dans les fichiers de ressources. Mes modèles de données auraient la capacité d'être locaux, donc quand le tout est devenu opérationnel, il y avait un ensemble de fichiers et une base de données qui alimentait le tout.

Peut-être que je suis gâté. Je reçois beaucoup de cette fonctionnalité gratuitement avec Django mais gettext est assez universel et le routage de tri (et al) n'est pas si difficile.

Questions connexes