2011-03-30 5 views
4

J'ai développé un site web qui doit maintenant être cloné pour plusieurs clients. Chaque client souhaite des personnalisations qui vont au-delà des aspects visuels et ne peuvent pas être gérées par des profils, des préférences ou quelque chose comme ça.Comment puis-je faire le suivi de plusieurs projets dans Git qui partagent un code commun?

Avec ce scénario, j'aimerais conserver un référentiel maître dans Git avec le code commun, puis une branche pour chaque client. De cette façon, je peux faire des changements individuels dans chaque client (branche) et partager des changements communs aussi (en utilisant le maître).

Cette approche est-elle correcte? Existe-t-il un autre moyen de gérer cela indépendamment des succursales distantes?

Merci!

Répondre

3

Cela fonctionnera. Vous devez faire attention avec les fusions - vous pouvez seulement fusionner du code commun vers le code client, mais vous pouvez choisir des changements individuels de clients à communs. Vous souhaiterez également déterminer quelle sera votre politique en ce qui concerne le passage du code de la branche commune aux branches clientes - s'il n'y a pas trop de code client-branche, il serait peut-être préférable de rebasculer vos modifications client code chaque fois que vous voulez mettre à jour; Avec plus de changements, il serait beaucoup plus facile de fusionner le code commun.

Si vous optez pour l'approche de rebasage, jetez un oeil à git rerere, qui est destiné à vous aider à traiter souvent avec rebasing.

1

Si votre référentiel est structuré de telle sorte que tout le code commun réside dans son propre répertoire séparé, il est possible de résoudre ce problème en utilisant git-submodules.

Si à la place, toutes les personnalisations client résident à la place dans leur propre sous-répertoire, il est possible d'utiliser la stratégie de fusion de sous-arborescence pour résoudre ceci élégamment.

Questions connexes