chgts texte explicatif

This commit is contained in:
eleonore12345 2024-07-12 14:22:01 +02:00
parent 0508ad3a11
commit e8683f850e

View File

@ -7,12 +7,9 @@ Comment minimiser la consommation en ressources mémoire et flux de données d'u
# Objectif
L'objectif est de trouver une combinaison de commandes Git. Cette combinaison doit permettre de cloner ou mettre à jour un dépôt Git et consommer le moins de ressources possibles. Par ressources, on entend le flux de données qui part du remote pour arriver au dossier local, ainsi que la place mémoire occupée par le dépôt sur le serveur local.
Le dépôt Git créé n'enverra aucune donnée au remote. Il n'aura aucune utilité de l'historique.
Il pourra éventuellement conserver certains fichiers locaux en plus de ses clonages Git. En cas de conflit, le remote aura toujours raison. Il incluera les éventuels submodules. Il peut vouloir télécharger un commit d'une certaine branche ou tag.
Lobjectif est d'obtenir la dernière version (ou une version précise) dun dépôt git, en utilisant le moins de ressources possible. Par ressources, on entend le flux de données qui part du remote pour arriver au dossier local, ainsi que la place mémoire occupée par le dépôt sur le serveur local.
Le dépôt Git créé n'enverra aucune donnée au remote. Il n'aura aucune utilité de l'historique. Il pourra éventuellement conserver certains fichiers locaux en plus de ses clonages Git. En cas de conflit, le remote aura toujours raison. Il incluera les éventuels submodules. Il peut vouloir télécharger le dernier commit de HEAD( par défaut) ou bien un commit d'une certaine référence, c'est-à-dire branche ou tag.
# Procédé
@ -28,7 +25,7 @@ La combinaison finale retenue est :
## Pour cloner :
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.
depth=1 permet d'uniquement cloner le dernier commit et les objets nécessaires. Par défaut, elle est 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)
@ -144,8 +141,30 @@ Les submodules sont clonés au début via les options de git clone --recurse-sub
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
### Description du script
Le script est composé de vingt-neuf tests (listés dans les résultats ci-dessous), qui s'appuient sur trois fonctions : generate_random_file, get_storage_used et get_bandwidth.
generate_random_file s'appuie sur la commande bash dd et /dev/random.
get_storage_used utilise la commande bash du.
get_bandwidth récupère la sortie des commandes Git et extrait le trafic affiché. Celui-ci ne prend pas en compte le trafic des submodules.
Les cinq premiers tests concernent le clonage.
Les tests suivants concernent la mise à jour du dépôt selon différentes commandes, avec pour chaque commande trois cas : après addition d'un fichier, après délétion d'un fichier, après addition puis délétion d'un fichier.
### Extrait du README
NAME
performance_tests.sh
SYNOPSIS
performance_tests.sh [-a] [-h] [-n number]
OPTIONS
-a excutes all the tests.
-n number executes test number
-h prints the help.
### Résultats
======================================= Tests on the initial populating of the repository
============================================================= TEST0
TEST 0: classic cloning.