Skip to content

GitHelp

PercevalSA edited this page Nov 30, 2016 · 3 revisions

SwARM

Swaggy Artistic Robots Matrix.

Git Help

for ROSE staff only

Submodule

Les submodules permettent d'avoir des dépendances dans un dépôt qui sont elles-mêmes issues d'autres dépôts. Ex : j'ai besoin d'une bibliothèque pour mon projet, je peux l'ajouter dans mon dossier de travail en la clonant depuis son dépôt github par exemple.

cas pratique : ChibiOS dans SwARM

On se place à la racine du projet SwARM (on doit se placer dans le dossier où l'on veut cloner le submodule) :

cd path-to-Swarm
git checkout imu

On choisi la branche sur laquelle on travaille : ici imu

On ajoute ensuite ChibiOS en tant que submodule :

git submodule add --branch stable_16.1.x [email protected]:ChibiOS/ChibiOS.git

la commande se comprend assez simplement. Notez que nous clonons la branche stable et non pas master car Giovanni indique que master n'est pas une release. Par défaut si la branche n'est pas précisée, c'est master qui est clonée.

on note alors la présence du dossier ChibiOS et du fichier .gitmodules  :

$ cat .gitmodules
[submodule "ChibiOS"]
	path = ChibiOS
	url = [email protected]:ChibiOS/ChibiOS.git
	branch = stable_16.1.x

il faut absolument commiter les deux éléments. Le dossier ChibiOS sera vu comme un submodule, et ne sera donc pas copié mais enregistré comme référence au dépôt de ChibiOS.

git commit -m "add ChibiOS as submodule"
git push

Voilà, c'est tout.

Cloner un dépôt qui possède des submodules

On peut cloner directement le dépôt avec les submodules. Mais il faut préciser la branche qui a été initialisée avec. (sinon on clone master directement, ça n'est pas un problème si le submodule a été ajouté sur la branche master) :

git clone --recursive [email protected]:rose-projects/SwARM.git --branch imu

Synchroniser les submodules d'un dépôt déjà cloné

Si on a déjà cloné le dépôt git on peut récupérer les submodule de la manière suivante :

On se place sur la branche désirée et on pull :

git checkout imu
git pull

une fois les màj téléchargées, on peut initialiser les submodule, dans notre cas il n'y en a qu'un seul : ChibiOS :

git submodule update --init ChibiOS

Et le submodule est téléchargé dans le dépôt. C'est fini. On peut développer et compiler à souhait.

Attention à ne faire aucune modification dans le dossier ChibiOS

Pour plus d'informations : la documentation officielle Sinon man git-submodule