doc-locale/fr-fr/administration/gitaly/consistency_checks.md
Gitaly exécute des vérifications de cohérence des dépôts :
Ces vérifications de cohérence permettent de s'assurer qu'un dépôt contient tous les objets requis et que ces objets sont valides. Elles peuvent être classées comme suit :
La suppression d'objets malformés qui échouent aux vérifications de cohérence nécessite une réécriture de l'historique du dépôt, ce qui n'est souvent pas possible. Par conséquent, Gitaly désactive par défaut les vérifications de cohérence pour un ensemble de problèmes cosmétiques qui n'ont pas d'impact négatif sur la cohérence du dépôt.
Par défaut, Gitaly ne désactive pas les vérifications de base ou liées à la sécurité afin de ne pas distribuer des objets pouvant déclencher des vulnérabilités connues dans les clients Git. Cela limite également la possibilité d'importer des dépôts contenant de tels objets, même si le projet n'a pas d'intention malveillante.
Les administrateurs d'instance peuvent remplacer les vérifications de cohérence s'ils doivent traiter des dépôts qui ne passent pas les vérifications de cohérence.
Pour les installations de paquets Linux, modifiez /etc/gitlab/gitlab.rb et définissez les clés suivantes (dans cet exemple, pour autoriser les en-têtes d'e-mail incorrects dans les anciens commits, et désactiver les vérifications de cohérence hasDotgit et gitmodulesUrl) :
ignored_blobs = "/etc/gitlab/instance_wide_ignored_git_blobs.txt"
gitaly['configuration'] = {
# ...
git: {
# ...
config: [
# Allow bad email headers in old commits
# (Populate a file with one unabbreviated SHA-1 per line.
# See https://git-scm.com/docs/git-config#Documentation/git-config.txt-fsckskipList)
{ key: "fsck.skipList", value: ignored_blobs },
{ key: "fetch.fsck.skipList", value: ignored_blobs },
{ key: "receive.fsck.skipList", value: ignored_blobs },
{ key: "fsck.missingSpaceBeforeEmail", value: "ignore" },
# Ignore specific consistency checks
# See https://git-scm.com/docs/git-fsck.html#_fsck_messages
{ key: "fsck.hasDotgit", value: "ignore" },
{ key: "fetch.fsck.hasDotgit", value: "ignore" },
{ key: "receive.fsck.hasDotgit", value: "ignore" },
{ key: "fsck.gitmodulesUrl", value: "ignore" },
{ key: "fetch.fsck.gitmodulesUrl", value: "ignore" },
],
},
}
Pour les installations compilées manuellement, modifiez la configuration Gitaly (gitaly.toml) pour faire l'équivalent :
[[git.config]]
key = "fsck.hasDotgit"
value = "ignore"
[[git.config]]
key = "fetch.fsck.hasDotgit"
value = "ignore"
[[git.config]]
key = "receive.fsck.hasDotgit"
value = "ignore"
[[git.config]]
key = "fsck.missingSpaceBeforeEmail"
value = "ignore"
[[git.config]]
key = "fetch.fsck.missingSpaceBeforeEmail"
value = "ignore"
[[git.config]]
key = "receive.fsck.missingSpaceBeforeEmail"
value = "ignore"
[[git.config]]
key = "fsck.gitmodulesUrl"
value = "ignore"
[[git.config]]
key = "fetch.fsck.gitmodulesUrl"
value = "ignore"
[[git.config]]
key = "fsck.skipList"
value = "/etc/gitlab/instance_wide_ignored_git_blobs.txt"
[[git.config]]
key = "fetch.fsck.skipList"
value = "/etc/gitlab/instance_wide_ignored_git_blobs.txt"
[[git.config]]
key = "receive.fsck.skipList"
value = "/etc/gitlab/instance_wide_ignored_git_blobs.txt"
Afin que Gitaly puisse continuer à fonctionner avec des dépôts présentant certaines caractéristiques malformées qui n'ont pas d'impact sur la sécurité ou les clients Gitaly, Gitaly désactive par défaut un sous-ensemble de vérifications cosmétiques.
Pour la liste complète des vérifications de cohérence, consultez la documentation Git.
badTimezone {#badtimezone}La vérification badTimezone est désactivée car il existait un bogue dans Git qui amenait les utilisateurs à créer des commits avec des fuseaux horaires invalides. Par conséquent, certains journaux Git contiennent des commits qui ne correspondent pas à la spécification. Étant donné que Gitaly exécute fsck sur les packfiles reçus par défaut, tout push contenant de tels commits serait rejeté.
missingSpaceBeforeDate {#missingspacebeforedate}La vérification missingSpaceBeforeDate est désactivée car git-fsck(1) échoue lorsqu'une signature ne comporte pas d'espace entre le courrier et la date, ou lorsque la date est complètement absente. Cela peut être causé par diverses raisons, notamment des clients Git défaillants.
zeroPaddedFilemode {#zeropaddedfilemode}La vérification zeroPaddedFilemode est désactivée car les anciennes versions de Git avaient l'habitude de compléter avec des zéros certains modes de fichier. Par exemple, au lieu d'un mode de fichier 40000, l'objet arbre aurait encodé le mode de fichier comme 040000.