2010-04-06 5 views
5

J'ai 2 projets, et en fait ces 2 projets sont environ 80% identiques les uns aux autres, la différence est principalement sur la langue et le modèle d'affaires, on est pour un public plus large en utilisant l'anglais et 9 $/modèle d'affaires mois, un autre utilise la langue locale avec le modèle d'affaires freemium.Maintenir le projet avec Git

Parfois quand je veux ajouter une nouvelle fonctionnalité/fonctionnalité, je veux l'ajouter dans les deux projets, mais aussi parfois je veux ajouter une fonctionnalité spécialement pour le projet local.

Ma question est, comment puis-je maintenir ces 2 projet avec git?

  1. Tenir à jour 2 git pour chaque projet ou
  2. Maintenir dépôt git avec 2 ramifier principalement ou
  3. Toute autre suggestion?

Répondre

8

créer trois projets git:

  • un projet "cœur": il contient le code partagé entre les deux autres projets

  • votre projet anglais: il a un sous-module pour le noyau plus spécifique code

  • votre projet traduit: il aussi a un sous-module pour le noyau, plus code spécifique

cette façon, vous pouvez modifier votre projet de base, mettez à jour les références de sous-module et vous seriez bien

+0

Les sous-modules sont la solution idéale. Tout le monde doit être clair sur ce qui se passe, mais une fois qu'ils sont, c'est le moins de travail. –

2

Est-il possible pour vous de gérer cela via la configuration et la localisation? C'est:

  • une base de code
  • Deux fichiers de localisation contenant anglaise et chaînes de langue locale
  • Configuration pour chaque version du site déterminant le modèle de paiement/activation des fonctions et le changement de comportement en conséquence

Mon point de vue personnel est qu'un projet = un référentiel. Si vos sites Web sont clairement différents, je pense toujours que votre problème pourrait être mieux traité en refactorisant le code commun en modules qui peuvent être configurés et modifiés de manière saine et contrôlée. Si vous permettez à chaque projet d'avoir son propre référentiel git, alors, sans effort, ils pourraient facilement diverger et contenir des différences qui ne peuvent pas être facilement suivies, introduisant des bugs subtils ou des fonctionnalités non testées.

Questions connexes