From a2c0ac538e24c6b76b115a626d77c7210d3a179e Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Thu, 11 Jul 2024 09:38:03 +0200 Subject: [PATCH] modifs texte --- texte_explicatif.txt | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/texte_explicatif.txt b/texte_explicatif.txt index d82d68a..574146c 100644 --- a/texte_explicatif.txt +++ b/texte_explicatif.txt @@ -29,11 +29,8 @@ La combinaison finale retenue est : git clone --depth=1 --recurse-submodules --remote-submodules --shallow-submodules depth=1 permet d'uniquement cloner le dernier commit et les objets nécessaires. Par défaut, elle est single-branch, mais il est possible de préciser --no-single-branch. - recurse-submodules s'assure que le contenu des submodules est cloné - remote-submodules s'assure que le contenu des submodules est cloné à partir du remote submodule originel - shallow-submodules s'assure que seul le dernier commit des submodules est importé (pour que cela fonctionne en local, il faut préciser ://file/ avant le chemin des submodules) @@ -47,25 +44,18 @@ git gc --aggressive --prune=now git submodule update --init --recursive --force --depth=1 --remote init met à jour le fichier .gitmodules - recursive applique la commande aux submodules de submodules etc. - force permet d'ignorer les changements locaux aux submodules et d'automatiquement check out la nouvelle version - depth=1 permet de considérer uniquement le dernier commit du submodule - remote permet de mettre à jour depuis le remote submodule originel git fetch --tags --depth=1 --prune --prune-tags origin tags permet de fetch les tags, elle doit être précisée y compris si un tag est fetched par référence - depth=1 permet de considérer uniquement le dernier commit - prune permet de supprimer du dossier remote en local les références qui ne sont plus accessibles - prune-tags permet non seulement de supprimer du dossier remote en local les références qui ne sont plus accessibles, mais aussi de supprimer les les tags locaux qui n'existent pas sur le remote - + git reset --hard origin/main git reflog expire --expire=now --all @@ -75,10 +65,9 @@ git gc --aggressive --prune=now git gc --aggressive --prune=now cette commande supprime les références non reliées et réorganise le dépôt pour l'optimiser. - aggressive invoque repack et prend plus de temps. repack défait et refait les packs, qui sont des unités de compression. -Cette combinaison ne permet pas de garder des fichiers compilés, néanmoins elle est extrêmement efficace en terme de gains de mémoire. +Cette combinaison ne permet pas de garder des fichiers ou modifications committé.es, ni de modifications de fichier non-committées. En revanche, elle permet de garder les fichiers créés non-committés. # Détails Voici un résumé de différentes pistes explorées afin de réduire l'empreinte du dépôt Git. @@ -140,7 +129,11 @@ C'est une option intéressante dans notre cas, car on pourrait vouloir sauvegard Les tests nous montrent que les options les plus économes en mémoire sont git merge -s ours et git --reset hard, qui font la même chose. Néanmoins git reset --hard tient en une ligne et n'implique pas la création d'une branche temporaire, c'est donc celle que nous retenons. - +### Gestion des submodules +Les submodules sont clonés au début via les options de git clone --recurse-submodules --remote-submodules. +Puis ils sont mis à jour par git submodule update --init --recursive --force --depth=1 --remote. +Les mêmes règles s'appliquent aux submodules qu'au reste du dépôt. Il est possible de préciser dans le fichier .gitmodules des règles d'import des submodules, comme un certain tag ou une certaine branche par exemple. +En retirant --remote-submodules du git clone et --remote du git submodule update, alors les submodules seront identiques au dépôt que l'on clone et plus au dépôt originel du submodule. RESULTATS des tests : ======================================= Tests on the initial populating of the repository