Comment transformer un répertoire dans un référentiel Git en un sous-module
Les sous-modules Git sont comme des référentiels dans des référentiels, qui vous permettent d’inclure des bibliothèques de code externes ou des dépendances dans votre projet, le tout sans lier le contrôle de version du module au projet lui-même. Cela maintient les modules séparés et faciles à mettre à jour, et il est facile de convertir un répertoire en un nouveau sous-module.
Qu’est-ce qu’un sous-module dans Git ?
Un sous-module est un référentiel Git qui est intégré dans un autre référentiel Git. Cela vous permet d’inclure le code d’un autre projet en tant que dépendance, tout en conservant son propre contrôle de version.
Lorsque vous clonez le référentiel parent, il clone également automatiquement le référentiel de sous-modules. Cela signifie que le code du sous-module et l’historique Git sont séparés du contrôle de version principal et peuvent être mis à jour pour plusieurs référentiels qui utilisent la bibliothèque.
Une alternative aux sous-modules consiste à publier vos bibliothèques sous forme de packages dans des gestionnaires de packages tels que NPM, Maven ou NuGet. Cependant, cela ne fonctionne pas pour tous les types de projets, et si vous travaillez avec du code privé, vous devrez configurer un registre de packages privé, ce qui peut être plus compliqué que de simplement intégrer le code source de la bibliothèque en tant que sous-module. .
Comment transformer un répertoire en sous-module
La première étape consiste à créer un nouveau référentiel pour le sous-module. Il s’agit généralement d’un service d’hébergement Git tel que GitHub , bien que vous puissiez créer un référentiel local sur votre ordinateur.
Ensuite, vous voudrez obtenir une nouvelle copie de votre référentiel principal pour créer le référentiel de sous-modules.
git clone git@github.com:username/repository.git submodule-repo
cd submodule-repo
git filter-branch --subdirectory-filter submoduledirectory -- --all
Vous souhaiterez remplacer l’URL distante de ce répertoire de modules par votre nouveau référentiel de sous-modules, généralement nommé « origine ».
git remote set-url origin https://github.com/new-repository.git
Ensuite, vous pouvez pousser l’historique comme vous le feriez normalement.
git push -u origin main
Ajout d’un nouveau sous-module
De retour dans le projet principal, vous voudrez ajouter le sous-module.
Tout d’abord, vous devez arrêter de suivre le répertoire que vous souhaitez transformer en sous-module à partir du référentiel parent. Il sera toujours là dans l’historique des versions de Git, et vous venez de l’ajouter au nouveau référentiel de modules de toute façon.
rm -rf directory_name
Ensuite, vous pouvez ajouter l’URL distante du référentiel de sous-modules que vous avez créé sur Github, à l’aide de la git submodule add
commande :
git submodule add git@github.com:username/repository.git directory_name
Lorsque vous exécutez cette commande, Git créera un nouveau répertoire de sous-modules dans le référentiel parent et clonera le référentiel de sous-modules dans ce répertoire. Il recommencera également à suivre le dossier du module.
Pour mettre à jour le sous-module, vous pouvez utiliser la git submodule update
commande :
git submodule update --remote submodule_name
Laisser un commentaire