Dans mon projet, j'ai besoin d'utiliser du code tiers, stocké dans plusieurs dépôts Git. Mon projet est également stocké dans un dépôt Git (séparé). Plusieurs personnes travaillent avec moi sur le projet principal, et j'en suis le mainteneur.
Dans les projets précédents, j'avais l'habitude de copier manuellement les dépendances dans l'arbre de travail Git, en ajoutant un petit fichier spécifiant la version que j'utilise.
C'est plutôt inconfortable car je dois mettre à jour quotidiennement l'une des dépendances, et j'y apporte souvent du code moi-même, la plupart du temps en même temps que des changements dans le projet principal.
J'ai décidé d'essayer les sous-modules Git pour assurer la gestion. Plus j'essaie, plus je suis frustré. Il semble même que la copie manuelle soit, peut-être, meilleure.
Voici quelques-unes de mes préoccupations :
- Nous ne sommes plus en mesure d'obtenir un état cohérent du référentiel avec une seule commande (
git checkout
a maintenant besoingit submodule update --init
). - Nous ne sommes pas en mesure d'utiliser correctement certains outils Git (
git archive
est la plus notable). - Nous ne sommes pas en mesure de voir les changements d'état / les différences dans les sous-modules à partir du projet principal.
- Je viens de le découvrir à mes dépens,
git submodule
ne fonctionne pas avec--git-dir
et--work-tree
et requièrent un changement physique du répertoire courant vers le "niveau supérieur de l'arborescence de travail".
Il semble que pour rationaliser le flux de travail de nos sous-modules (c'est-à-dire une opération == une commande), nous devons écrire une enveloppe assez épaisse autour de Git. C'est triste.
Notez qu'il n'est pas possible de s'éloigner de Git ou de fusionner entièrement le développement des sous-projets dans le projet principal.
J'utilise peut-être git submodules
de manière erronée ? Existe-t-il un bon tutoriel sur le flux de travail ?
N'hésitez pas à vous exprimer, même si vous ne connaissez pas la bonne réponse, mais partagez mes préoccupations :-)