Retour aux articles • IA • • 3 min de lecture

Repomix : empaqueter un dépôt Git

Compiler un dépôt Git entier en un fichier structurer XML/Markdown avec compression AST Tree-sitter et détection de secrets Secretlint grâce à Repomix.

Repomix : empaqueter un dépôt Git

Pour soumettre un audit d’architecture global ou une revue de sécurité multi-fichiers à un modèle à large fenêtre de contexte (comme Gemini 2.5 Pro à 2 millions de tokens ou Claude Opus), copier-coller des fichiers un par un fait perdre la topologie du projet.

Repomix (yamadashy/repomix) automatise cette étape en compilant l’intégralité d’un dépôt Git en un artefact unique, structuré en XML ou Markdown, nettoyé par Tree-sitter et contrôlé contre les fuites de secrets via Secretlint.


Comment fonctionne Repomix

Contrairement à une simple concaténation find . -exec cat {} +, Repomix applique quatre filtres d’ingénierie avant de produire le fichier de contexte :

Architecture & Flux : Repomix : empaqueter un dépôt Git pour l'I
  1. Respect natif de .gitignore et .repomixignore : exclusion automatique des dossiers node_modules/, venv/, .git/, binaires, caches et artefacts de build.
  2. Garde-fou de sécurité (Secretlint) : analyse préventive de chaque fichier pour bloquer l’export si une clé privée SSH/PEM, un jeton AWS/GCP ou un secret .env est détecté.
  3. Compression syntaxique (--compress via Tree-sitter) : possibilité d’extraire uniquement les signatures de fonctions, classes, structures et docstrings en omettant le corps d’implémentation, réduisant le volume de tokens d’environ 70 % tout en conservant la carte exacte de l’architecture.

Commandes utiles au quotidien

Repomix s’exécute directement via npx ou une installation globale légère :

# Générer un export XML optimisé pour Claude / Gemini avec vérification des secrets
npx repomix --style xml --output repo-context.xml

# Mode compressé Tree-sitter (idéal pour les très gros dépôts > 100k lignes)
npx repomix --compress --style markdown --output arch-signatures.md

# Cibler uniquement un sous-module critique avec comptage des fichiers les plus lourds
npx repomix --include "backend/services/**/*.py,scripts/*.py" --top-files-len 15
Animation exécution CLI dans le terminal

–> Couplé à un graphe structurel local (Graphify), Repomix permet de fournir à un modèle d’arbitrage un dossier d’architecture complet, reproductible et garanti sans secret en moins de trois secondes.


Caractéristiques

FonctionnalitéScript cat / find artisanalCopier-Coller IDERepomix (yamadashy/repomix)
Respect de .gitignore & binaires❌ Manuel et fragilePartiel✅ Automatique & natif
Protection anti-fuite de secrets❌ Aucune❌ Aucune✅ Secretlint intégré par défaut
Compression AST (Tree-sitter)❌ Impossible❌ Impossible✅ Mode --compress (-70 % tokens)
Format balisé optimisé LLMTexte brut ambiguBlocs Markdown✅ XML (<file path="...">) / MD / JSON
Audit du poids en tokens par fichier❌ Absent❌ Absent✅ Rapport Top-N Tiktoken intégré
CommandeDescription
`npx repomix --style xml`
Empaquette le dépôt courant au format XML structuré avec arborescence complète en en-tête.
`npx repomix --compress`
Utilise Tree-sitter pour ne conserver que les signatures de fonctions et types (-70 % de tokens).
`npx repomix --remote user/repo`
Clone et empaquette directement un dépôt GitHub distant sans polluer le workspace local.
`npx repomix --include 'src/**/*.rs'`
Restreint l'empaquetage aux seuls fichiers correspondant au pattern glob spécifié.