2010-08-24 4 views
3

Dans mon entreprise, nous utilisons git depuis quelques mois maintenant (et nous en sommes heureux), mais nous n'avons toujours pas obtenir git pour 100%.Workflow pour maintenir différentes versions d'une webapp en utilisant git?

Notre produit principal est un site web que nous offrons dans différentes langues (frontend + admin backend). Certains de ces sites Web offrent des fonctionnalités que d'autres ne devraient pas offrir (par exemple, le type de champs qui doivent être remplis sur un formulaire donné, différents jeux de règles de validation, etc.). Étant donné que ces différences sont relativement faibles, nous utilisons maintenant un fichier de configuration pour déterminer si des éléments particuliers doivent être utilisés par le site Web. Mais je suppose que cela causera des problèmes lorsque les différences entre les sites deviendront plus grandes.

Je suppose que l'utilisation de différentes branches facilitera la maintenance, mais comment gérer différentes branches avec un cœur partagé? Nous n'utilisons pas encore d'outil de déploiement comme Capistrano (mais nous prévoyons de le faire), de sorte que la sélection manuelle sans fin du maître dans toutes les branches n'est pas une option pour le moment. Donc, étant donné cette configuration, comment les succursales peuvent-elles nous aider?

master 
| 
- english 
| 
- german 
| 
- french 

(Pour plus de précisions: cela ne concerne pas l10n/i18n, mais sur le partage des caractéristiques de base entre les branches)

Répondre

1

Sons comme vous » d voulez utiliser sous-modules. Cela vous permettra de conserver toutes les fonctionnalités partagées en tant que référentiel unique et les sites individuels en tant que leurs propres référentiels qui suivent les modifications dans le sous-module partagé. Beaucoup de gentil (mais un peu laconique, comme d'habitude avec la documentation git) info here, y compris une webdiffusion.

De la page liée:

soutien de sous-module de Git permet un dépôt à contenir, en tant que sous-répertoire , une caisse d'un projet externe . Les sous-modules maintiennent leur propre identité; le sous-module support juste stocke le sous-module emplacement du référentiel et commit ID, afin d'autres développeurs qui cloner le projet contenant (« SuperProject ») peut facilement cloner tous les sous-modules à la même révision. Les extractions partielles du superprojet sont possibles: vous pouvez dire à Git de cloner aucun, certains ou tous les sous-modules.

EDIT: Si vous voulez garder la structure de la branche, je suppose que vous pouvez créer un script de crochet (en .git/crochets /) qui vérifie chaque branche spécifique à la langue et fusionne la dernière commettras de la commune branche chaque fois que vous vous engagez à cela. Donc, vous auriez une branche partagée, et une branche pour chacune des langues, et vous feriez essentiellement des validations à la branche partagée, et elles seraient automatiquement fusionnées dans les autres. Je ne pense pas que cela semble être une bonne solution, et je ne l'ai pas essayé. Si vous voulez essayer, cherchez des informations sur les hooks. Je pense que les sous-modules sont un ajustement plus naturel.

+0

Cela semble intéressant, merci. Mais je suppose qu'il n'y a aucun moyen d'utiliser des branches pour mettre à jour facilement le code partagé? – vindia

+0

@vjo: voir la réponse éditée – Felixyz

Questions connexes