Equivalent de svn:externals avec Git – Comment intégrer un dépôt externe à son propre projet

N’utilisant Git que depuis quelques mois, je n’en connais pas encore tous les aspects, loin de là !
Aujourd’hui j’ai eu un besoin très simple, intégrer à mon dépôt Git un autre dépôt Git. En gros, l’équivalent d’un bon vieux svn:externals. Je n’ai pas trouvé immédiatement comment faire donc je partage ici la commande magique :

git submodule

L’utilisation est donc très simple. Au lieu de faire un git clone dans un sous-dossier de son projet, il suffit de faire à la racine du dépôt :

git submodule add repo_url ./your_folder/

Un nouveau dossier caché est créé. Il vous suffit donc de le versionner dans votre propre dépôt pour que la référence soit prise en compte.

Si vous clonez votre dépôt depuis un nouvel emplacement, il vous faut utiliser la commande git submodule init pour récupérer les dépôts externes référencés.
Et ensuite, un git submodule update pour mettre à jour régulièrement les sous-projets.

Aussi simple que ça !

Plus d’infos sur cette commande à l’adresse suivante : http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html

Publié par Olivier Balais

Jeune ingénieur logiciel basé à Lyon (@overnetcity) passionné par les NTIC et le développement Web, je suis actuellement salarié chez Reputation VIP et effectue en parallèle des missions ponctuelles en temps que Freelance. Passionné depuis toujours par l'informatique et le développement, suite à une formation solide à l'INSA de Lyon, je me suis spécialisé dans la réalisation de bout en bout de projets web complexes.

Rejoindre la conversation

1 commentaire

  1. Bonjour,

    Merci pour le post, très utile. Juste une question: J’ai un souci quand je fais les git update…

    Disons que je modifie le submodule et je commit (dans une répertoire isolé). Après je vais dans le répertoire du projet qui contient le submodule et je fais le git submodule update, mais je vois rien passer (meme quand je suis sur le folder du submodule).

    Je suis obligé d’aller dans le repertoire du submodule et faire un git pull. Est-ce que normal?

    Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *