Git sous-module ou sous-référentiel ou à distance?
J'utilise GIT pour gérer un Système de Gestion de Contenu (CMS) du projet. Le CMS peut avoir plusieurs plugin (module).
Donc, fondamentalement, je veux avoir 3 types de référentiels:
- Le CMS de base de développement ( chaque nouveau projet est une extraction de la dernière stable & non configuré version )
- 1 dépôt par module/plugin. ( chaque nouveau projet permettra l'extraction de la dernière version stable du module qu'ils veulent mettre en œuvre )
- 1 dépôt par projet ( chaque client aura un référentiel qui représentent la personnalisation du CMS de base et les modules )
Pour le type 1 & 2, je suppose que c'est simple de base du référentiel.
Mais quand il viennent de le projet du client, je m'embrouille:
- D'abord je vais cloner le CMS, puis aller dans le dossier /modules/dossier et clone de nouveau tous les modules nécessaires ? Qui va faire un dépôt à l'intérieur d'un référentiel ! Les premières pensions vais essayer de vous connecter les .git/dossier de chaque module ?
- Je ne peux pas utiliser les sous-module que chaque client a besoin de leurs modules à être personnalisés.
- Si je modifier un composant de base d'un module ( pas de personnalisation, juste une correction de bug ), je peux pousser ce fichier unique pour le module d'origine référentiel ?
- (Ne pas parler du module unitTest qui seront répartis tout autour )
La question est donc:
Comment dois-je organiser le référentiel(s) /fichiers /dossiers dans l'ordre pour être efficace ?
Vous devez vous connecter pour publier un commentaire.
La mise en page que vous avez décrit fonctionne vraiment bien avec les submodules. J'avais doucement vous recommandons la lecture de l' docs et en essayant un peu de tutoriels. La différence clé de votre plan présente, c'est que chaque client référentiel client et référentiel de plug-in aura deux télécommandes au lieu d'un. Et, lorsque vous souhaitez démarrer un nouveau projet client, vous devrez
Une meilleure option peut être d'utiliser le même référentiel et faire simplement une branche par client. C'est la façon dont je le ferais.
Brève mise à jour des renseignements supplémentaires au sujet de la réponse précédente: si vous n'aimez pas
git submodules
approche ou pense que c'est trop dur à comprendre, vous pouvez essayergit subtrees
(vérifier cet article sur les moyennes)git subrepo
(alternative plus facile à submodules, sur Github)N'oubliez pas de vérifier si vous pouvez utiliser un autre depency manager (comme RubyGems pour Ruby, Compositeur pour PHP...) au lieu de submodules, il serait plus facile à utiliser et à entretenir.