147 votes

Comment puis-je avoir des dépendances liées dans un repo git?

Dans mes scripts, j'utilise souvent des bibliothèques (les miennes ou d'autres) ayant leur propre dépôt. Je ne veux pas les dupliquer dans mon dépôt et me contenter de les mettre à jour à chaque nouvelle version. Cependant, lorsque quelqu'un clone le référentiel, il doit toujours fonctionner localement et ne pas avoir de liens rompus.

Des idées sur ce que je pourrais faire?

(Ne supposez pas beaucoup de connaissances git, je suis un git total n00b, git me fait peur la merde)

207voto

Emily Points 9231

Vous pouvez faire cela avec submodules dans git. Dans votre référentiel, faire:

git submodule add path_to_repo path_where_you_want_it

Donc, si la bibliothèque de référentiel a une URL de git://github.com/example/some_lib.git et que vous vouliez en lib/some_lib dans votre projet, vous devez taper:

git submodule add git://github.com/example/some_lib.git lib/some_lib

Notez que ceci doit être fait à partir du répertoire de niveau supérieur dans votre référentiel. Afin de ne pas cd dans le répertoire où vous êtes le mettre en premier.

Une fois que vous ajoutez un sous-module, ou chaque fois que quelqu'un fait une nouvelle caisse de votre dépôt, vous aurez besoin de le faire:

git submodule init
git submodule update

Et puis tous les submodules vous avez ajouté sera vérifié à la même version que vous avez.

Lorsque vous souhaitez mettre à jour vers une version plus récente de l'une des bibliothèques, cd dans le sous-module et pull:

cd lib/some_lib
git pull

Ensuite, lorsque vous faites un git status vous devriez voir lib/somelib inscrites dans la nouvelle section. Ajouter ce fichier, valider, vous êtes à jour. Lorsqu'un collaborateur tire qui s'engagent dans leur référentiel, ils verront lib/somelib tel que modifié jusqu'à ce qu'ils exécutent git submodule update de nouveau.

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