Resources attached to the Road To DevOps tutorial https://blog.noobtoroot.xyz/road-to-devops/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
6.4 KiB

<!-- .slide: data-background="#2E2E2E" data-state="nologo-slide" -->
# Gestion des sous-modules
@@
<!-- .slide: class="align-left" -->
## Principe
Les sous-modules sont utilisés pour **inclure** un dépôt git dans un autre dépôt.
<br/>
Utile pour séparer le code dans différents dépôts.
<br/>
Un **sous module** peut être ajouté à plusieurs dépôts.
Note:
- composants partagés
@@
<div class="sl-block" data-block-type="text" style="height: auto; width: 960px; left: 0px; top: 2px;" data-block-id="1b20eb205a12da7799a404bdd505aeed">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Fonctionnement</h2>
</div>
</div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 840px; left: 40px; top: 139px;" data-block-id="a5715c1377d27859ee344644a0a9c077">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p style="text-align:left">L'ajout d'un sous module se fait via la commande suivante : <code>git submodule add &lt;URL&gt; &lt;local-path&gt;</code></p>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">Un fichier <code>.gitmodules</code> est créé dans le dépôt.</p>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">Se comporte comme un <code>git clone</code>.</p>
</div>
</div>
<div class="sl-block" data-block-type="image" style="min-width: 4px; min-height: 4px; width: 880px; height: 132px; left: 40px; top: 550px;" data-block-id="6f7a128d177266c9b169a9a90f34d8ea">
<div class="sl-block-content" style="z-index: 13;">
<img src="svg/submodule_folder.svg" data-natural-width="140" data-natural-height="21" style=""/>
</div>
</div>
@@
<div class="sl-block" data-block-type="text" style="height: auto; width: 960px; left: 0px; top: 2px;" data-block-id="b97091c6029189e47d8a8ca3987fcbc8">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 10;">
<h2>Configuration</h2>
</div>
</div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 840px; left: 40px; top: 138px;" data-block-id="a7b391d82addc3222b633f975c543a38">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p style="text-align:left">Se comporte
<strong>comme un dépôt git</strong>.
</p>
<p style="text-align:left">Par défaut clone la branche principale du projet.</p>
<p style="text-align:left">Pour se positionner sur un tag, il faut exécuter la commande
<strong>git</strong> dans le dossier du sous module.
</p>
<p style="text-align:left">Pensez à commiter le fichier <code>.gitmodules</code>.</p>
</div>
</div>
<div class="sl-block" data-block-type="image" style="width: 880px; height: 132px; left: 40px; top: 387px; min-width: 4px; min-height: 4px;" data-block-id="3f1d5d1f1b17f5de727067cd9aa6e5fd">
<div class="sl-block-content" style="z-index: 13;">
<img data-natural-width="140" data-natural-height="21" style="" data-lazy-loaded="" src="svg/submodule_folder.svg"/>
</div>
</div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 840px; left: 90px; top: 540px;" data-block-id="785dbe8c3b7ad3427e4f8791efef4770">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p style="text-align:left"><code>$ cd reveal</code></p>
<p style="text-align:left"><code>$ git checkout 1.0.0</code></p>
</div>
</div>
@@
<div class="sl-block" data-block-type="text" style="height: auto; width: 960px; left: 0px; top: 0px;" data-block-id="136c17b655725cf7d6f65dcb24ccfb66">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 10;">
<h2>Mise à jour</h2>
</div>
</div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 840px; left: 40px; top: 140px;" data-block-id="e3df6efc26c9a01aa7741b79e6aa3bd3">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p style="text-align:left">La mise à jour s'exécute de cette manière :&nbsp;</p>
<pre><code>git submodule update --remote --rebase</code></pre>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">remote : pour chercher les modifications distantes.</p>
<p style="text-align:left">rebase : pour rejouter l'ordre des commits.</p>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">Pensez à commiter le fichier .submodule pour figer la nouvelle version.</p>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">&nbsp;</p>
</div>
</div>
@@
<div class="sl-block" data-block-type="text" style="height: auto; width: 960px; left: 0px; top: 0px;" data-block-id="b3677a7380d6a7da4da9d8eaa11fb87c">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 10;">
<h2>Clone</h2>
</div>
</div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 840px; left: 40px; top: 140px;" data-block-id="8911e33da0e35820a3d078b1d25eac85">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p style="text-align:left">Un dépôt contenant un sous-module devra l'initialiser&nbsp;:</p>
<pre style="color:rgb(51, 51, 51); font-size:0.9em"><code>git submodule init</code></pre>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">Initialiser et mettre à jour les sous-modules d'un coup :</p>
<pre style="color:rgb(51, 51, 51); font-size:0.9em"><code>git submodule update --init</code></pre>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">Les sous-modules peuvent contenir des sous modules eux-même :</p>
<pre style="color:rgb(51, 51, 51); font-size:0.9em"><code>git submodule update --init --recursive</code></pre>
</div>
</div>
@@
<!-- .slide: class="align-left" -->
## Conseils
Pas de modifications via le dossier sous-module mais directement dans le repository original.
<br>
Définir au plus tôt dans le projet les sous-modules.
<br>
Penser à suivre les modification distantes.
<br>
Utiliser des tags pour les sous module.