Dépôt GIT en submodule

Bonne ou mauvaise idée ?

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour Zesteuse / Zesteur citronné,

Je suis en plein développement d’une application React pour mon entreprise et j’ai besoin de modifier un module externe spécifique pour l’adapter aux besoins du cahier des charges.

Dans un premier temps, j’ai décidé de fork le module. Puis je me suis retrouvé devant la première contrainte : comment je peux tester mon code ? L’idéal ce serai de pouvoir le tester dans l’application que je développe pour choisir quelles modifications apporter. En dehors du contexte, ça devient franchement compliqué d’avancer (je tiens à préciser que le node module est un gros composant React, ce n’est pas un simple bouton).

Puis m’est venu à l’esprit d’utiliser des sous-modules Git. Est-ce une bonne idée ? Encore maintenant, je n’en sais rien. J’ai pu placer mon fork GIT dans un répertoire, en l’occurrence dans /src/vendors. Cette méthode offre la possibilité de modifier le code source, de compiler le script et d’être importé depuis le composant utilisant le node_modules (puis-ce qu’un lien symbolique est créé dans les node_modules de mon application). Chouette !

Après quoi, je crée un commit avec toutes ces modifications dans la branche dev. Pour vérifier que tout est bon, je checkout sur la branche master - là mystérieusement le répertoire du sous-module dans /src/vendors ne disparaît pas … je décide de supprimer le répertoire à la main avant de revenir à la branche dev. Puis à partir de ce moment là, je n’ai plus jamais réussi à re-télécharger mon sous-module (le répertoire est définitivement vide, même en tapant git submodule update --init --recursive). Il était pourtant bien inscrit dans le fichier .git/config.

Ne comprenant pas, je tente de cloner le projet à côté ; checkout sur la branche dev puis initialisation des sous-modules ; est-ce bien git submodule update --init --recursive ? En tout cas, rien ne s’est passé comme prévu ; le sous-module semble perdu à tout jamais ! Le sous-module n’apparaît même pas dans le fichier de config. J’ai décidé d’enlever le commit que j’avais fait sur la branche dev (force push) pour revenir juste avant mon schmilblick.

Qu’en pensez-vous ? Ce que je veux c’est simplement pouvoir modifier le module dans le même environnement que mon projet ; sachant que je n’ai absolument aucune envie de mélanger mes dépendances avec celles du module (et puis en plus, il a ses propres méthodes de compilation, ça ne serait pas raisonnable de les coupler).

Merci beaucoup pour votre aide.

Tant de choses, tant de vies, tant de possibilités.

+0 -0

Puis m’est venu à l’esprit d’utiliser des sous-modules Git. Est-ce une bonne idée ?

Toutes mes expériences avec les sous-modules (dont des pro sur du gros projet) se sont soldées par le même constat : le concept est intéressant, en pratique c’est la plaie. Je pense que c’est efficace seulement si les sous-modules n’évoluent que rarement.

Auteur du sujet

Toutes mes expériences avec les sous-modules (dont des pro sur du gros projet) se sont soldées par le même constat : le concept est intéressant, en pratique c’est la plaie. Je pense que c’est efficace seulement si les sous-modules n’évoluent que rarement.

SpaceFox

Merci pour ta réponse. Alors qu’est-ce que tu me conseillerai ?

Le but étant que je ne perde pas trop de temps à modifier le module en question. Pour un projet perso, j’avais joué avec les symlinks : deux dépôts GIT (le projet & le module), puis j’avais créé un lien symbolique ~/git/projet/node_modules/module vers ~/git/module. Je trouve ça (ultra) sale, dès que tu fais un npm install dans le projet t’es marron … d’où les sous-modules. J’ai sûrement louper quelque chose quand même - ça me paraît bizarre que je n’ai pas pu retrouver le sous-module, c’est comme si la configuration était restée sur mon PC.

Tant de choses, tant de vies, tant de possibilités.

+0 -0
Auteur du sujet

Finalement, j’ai décidé de cloner le module dans un répertoire voisin au projet et de l’installer (npm i ../module). Ce n’est pas l’idéal mais ça fonctionne beaucoup mieux ! :) c’est dommage, le concept de submodule me plaisait bien …

Tant de choses, tant de vies, tant de possibilités.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte