Skip to content

chore(repo): réduire le poids du dépôt (.git 2,2 GB) — binaires de build commités dans l'historique #415

Description

@myia-ai-01

Contexte

Le clone du dépôt est devenu très long (onboarding d'une nouvelle machine). Mesure sur master 0bf77852 :

  • .git local = 2,2 GB (size-pack 2,01 GiB, 7 packs) ; GitHub diskUsage = 2,12 GB.
  • Or le contenu utile est essentiellement textuel (CSV, C#, Markdown, templates JSON/Mustache). La lourdeur vient de binaires versionnés dans git — à la fois au HEAD et accumulés dans l'historique.

Constat (mesuré)

A. Encore trackés au HEAD (~1,4 GB de binaires)

Zone Taille Nature Régénérable ?
Generation/Converters/.../Published/v1.x/ 768 MB (13 fichiers) Binaires .NET publiés (osx/linux/win .zip, .exe, splits .001/.002/...) re-commités à chaque version v1→v1.3 ✅ oui (build)
DNNPlatform/Portals/1/Downloads/*.zip 205 MB Zips Print&Play distribuables (cartes numériques, A0, A4...) ✅ oui (pipeline)
DNNPlatform/App_Data/ExtensionPackages/Module_2SexyContent_*.resources 124 MB Packages d'install 2sxc 14.x + 15.x ✅ oui (re-téléchargeables)
.png (cartes) ~240 MB Images de cartes ⚠️ partiellement (pipeline)
.svg dont Argumentum_Fallacies_MindMap_Fr_4.svg (25 MB) ~99 MB Mind maps + packaging ⚠️ certains régénérables
Sources design : Generation/Sketch/argumentum.sketch (45 MB), Cards/Packaging/*.ai/*.pdf/*.svg ~90 MB Sources Illustrator/Sketch ❌ sources, à préserver

B. Dans l'historique seul (gonfle le pack, invisible au HEAD)

  • Published/ re-commité à chaque version : top blobs = osx-x64.zip 83 MB, linux-x64.zip 80 MB (×plusieurs), win-x64.zip 72 MB (×plusieurs)… chaque release re-commit ~70-83 MB.
  • Arbre legacy dupliqué Cartes/Generation/Converters/.../Published/v1/ : 0 octet au HEAD (supprimé) mais binaires Argumentum.AssetConverter.exe ~70-79 MB toujours présents dans les packs.

Plan proposé (3 phases)

Phase 1 — non destructif, immédiat (PR normale)

  1. Étendre .gitignore : **/Published/, **/bin/, **/obj/, DNNPlatform/Portals/*/Downloads/*.zip, DNNPlatform/App_Data/ExtensionPackages/*.resources.
  2. git rm --cached -r sur les binaires trackés régénérables (Published/, Downloads zips, .resources) — après preuve de préservation (vérifier qu'un build/pipeline ou GitHub Release les reconstitue).
  3. Trancher le sort des sources design (.sketch/.ai/gros .svg) : Git LFS ou stockage externe (GDrive .shared-state / Releases).

⚠️ La Phase 1 ne réduit PAS .git (le clone reste ~2 GB) : elle stoppe la croissance future et allège le checkout de travail. Le gain sur le clone vient de la Phase 2.

Phase 2 — réécriture d'historique (DESTRUCTIF, gated sur feu vert jsboige)

  • git filter-repo pour purger les gros blobs de l'historique : Published/, Cartes/ (arbre legacy), Downloads/*.zip, App_Data/.../*.resources.
  • Gain attendu : ~2 GB → < 200 MB (clone quasi instantané).
  • ⚠️ Réécrit tous les SHAs → implique : sauvegarde complète préalable, force-push coordonné, toutes les machines re-clonent, refs/PR anciennes invalidées. Décision jsboige obligatoire (action non réversible côté collaborateurs).

Phase 3 — politique assets pérenne

Débloquer l'onboarding myia-po-2024 tout de suite (interim, sans attendre la cleanup)

  • Clone partiel (recommandé, garde l'historique complet à la demande) :
    git clone --filter=blob:none https://github.com/ArgumentumGames/Argumentum.git
  • ou shallow (le plus rapide, sans historique) : git clone --depth=1 ...

Garde-fous

  • Aucune suppression sans preuve de préservation (cf. règle projet) : les Published/Downloads/.resources sont a priori régénérables, mais vérifier au cas par cas avant rm --cached et avant filter-repo.
  • Phase 2 strictement après sauvegarde + go explicite jsboige.

Mesures : git count-objects -vH, git rev-list --objects --all | git cat-file --batch-check, git ls-tree -r -l HEAD sur master 0bf77852 (2026-06-01).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions