209 votes

Comment configurer un projet git pour utiliser un submodule de repo externe ?

J'aimerais créer un repo qui tire un repo distant.

Par exemple, disons que jQuery est un sous-module :

git://github.com/jquery/jquery.git

Quel serait le processus de création d'un repo avec jQuery comme sous-module et l'ajout de mon propre externe comme repo distant.

De plus, une fois la configuration effectuée, si je pousse/tire sur ma propre télécommande, l'externe restera-t-il intact ?

337voto

Michael G. Emmons Points 16681
  1. Vous avez un projet - appelez-le MyWebApp qui a déjà un repo github
  2. Vous voulez utiliser le Dépôt jquery dans votre projet
  3. Vous souhaitez intégrer le dépôt de jquery dans votre projet en tant que sous-module .

Les sous-modules sont vraiment, vraiment faciles à référencer et à utiliser. En supposant que vous avez déjà configuré MyWebApp en tant que repo, depuis le terminal tapez ces commandes :

cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery

Cela créera un répertoire nommé externals/jquery * et le lier au dépôt jquery de github. Maintenant, nous avons juste besoin d'initier le sous-module et de cloner le code vers lui :

git submodule update --init --recursive

Vous devriez maintenant avoir tout le dernier code cloné dans le submodule. Si le repo de jquery change et que vous voulez récupérer le dernier code, il suffit d'émettre la commande submodule update à nouveau. Veuillez noter : J'ai généralement un certain nombre de dépôts externes dans mes projets, donc je regroupe toujours les dépôts dans un répertoire "externals".

Le site en ligne Livre Pro Git contient de bonnes informations sur les submodules (et sur git en général), présentées de manière simple. Autre solution, git help submodule donnera également de bonnes informations. Vous pouvez également consulter le site Tutoriel sur les sous-modules Git sur le wiki git.

J'ai remarqué cet article de blog qui parle des submodules et les compare au mécanisme svn:externals de Subversion : http://speirs.org/blog/2009/5/11/understanding-git-submodules.html

* La meilleure pratique consiste à toujours placer vos submodules dans leur propre répertoire, par exemple Externals. Si vous ne le faites pas, le répertoire racine de votre projet peut devenir très vite encombré.

23voto

Hugo Points 3276

La plupart de ce que vous devez savoir a déjà été répondu, je ne m'attarderai donc pas sur ce point, mais j'ai trouvé un petit élément d'information qui est généralement absent.

Comme vous le savez, "git pull" ne met pas à jour les submodules, et "git submodules update" ne télécharge pas non plus le dernier HEAD de ces submodules.

Pour mettre à jour tous vos sous-modules à leur dernière révision amont, vous pouvez utiliser

git submodule foreach git pull

Si vous modifiez souvent vos submodules, et que vous en avez beaucoup, alors "git foreach" vous sera d'une aide précieuse.

13voto

Greg Bacon Points 50449

Voir le Tutoriel sur les sous-modules Git sur le wiki git.

2voto

Tom Points 5641

A la fin, j'ai trouvé http://github.com/evilchelu/braid cela semblait correspondre à la façon dont je m'attendais à ce que les sous-modules et les télécommandes fonctionnent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X