2.8 KiB
Title | Tags | Date | ||
---|---|---|---|---|
Git submodules |
|
2015-07-23 |
Pour éviter de se trimballer toutes les dépendances d'un projet au sein-même des sources (et éviter les incohérences, les changements de versions, tout ça), plein de solutions existent: pip
pour les projets Python, bower
pour des sources Web, npm
pour Node, ...
Vu que la plupart de mes projets sont en Python, une première solution serait d'utiliser pip
avec la commande -e
, et de lui indiquer le chemin vers le dépôt souhaité.
pip install -e git+https://github.com/PurePelicanTheme/pure.git#egg=puretheme
Petit problème: pip
s'attend bien à installer la dépendance. Forcément, lorsqu'il aura terminé de télécharger le dépôt distant, on va rencontrer une erreur, puisqu'il va chercher un fichier setup.py
:
pip install -e git+https://github.com/PurePelicanTheme/pure.git#egg=PureTheme
Obtaining PureTheme from git+https://github.com/PurePelicanTheme/pure.git#egg=PureTheme
Updating /home/fred/Sources/grimboite/src/puretheme clone
Running setup.py (path:/home/fred/Sources/grimboite/src/puretheme/setup.py) egg_info for package PureTheme
Traceback (most recent call last):
File "<string>", line 17, in <module>
IOError: [Errno 2] No such file or directory: '/home/fred/Sources/grimboite/src/puretheme/setup.py'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 17, in <module>
IOError: [Errno 2] No such file or directory: '/home/fred/Sources/grimboite/src/puretheme/setup.py'
----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/fred/Sources/grimboite/src/puretheme
Storing debug log for failure in /home/fred/.pip/pip.log
L'autre solution, si vous utilisez Git, ce sont les sous-modules: cela consiste à initialiser un répertoire dans lequel va se trouver la branche correspondante du dépôt que vous lui indiquerez. Les dépendances sont renseignées dans le fichier .gitmodules
, à la racine de votre dépôt.
Pour initialiser un nouveau dépôt: git submodule init <url> {path}
Toutes les informations sont stockées dans le fichier .gitmodules
, qui se trouve à la racine de votre projet. Chaque projet sera indiqué, avec son url de téléchargement et le chemin vers lequel il sera stocké.
[submodule "blue-penguin"]
path = themes/blue-penguin
url = https://github.com/jody-frankowski/blue-penguin.git
[submodule "themes/pure"]
path = themes/pure
url = https://github.com/PurePelicanTheme/pure.git
Pour finir, il existe une commande qui permet de mettre chaque sous-module à jour: git submodule update --init --recursive
.