Gitingest
Transformez n'importe quel dépôt Git en un texte optimisé pour les prompts des LLM.
Vous pouvez aussi remplacer hub
par ingest
dans n'importe quelle URL GitHub pour accéder au digest correspondant.
gitingest.com · Extension Chrome · Module Firefox
Deutsch | Español | Français | 日本語 | 한국어 | Português | Русский | 中文
🚀 Fonctionnalités
- Contexte simplifié : Obtenez un résumé textuel à partir d'une URL de dépôt Git ou d'un répertoire
- Formatage intelligent : Format de sortie optimisé pour les prompts des LLM
- Statistiques sur :
- La structure des fichiers et répertoires
- La taille de l'extrait
- Le nombre de tokens
- Outil CLI : Exécutez-le comme une commande shell
- Package Python : Importez-le dans votre code
📚 Prérequis
- Python 3.8+
- Pour les dépôts privés : Un token d'accès personnel GitHub (PAT). Générez votre token ici !
📦 Installation
Gitingest est disponible sur PyPI. Vous pouvez l'installer avec pip
:
pip install gitingest
ou
pip install gitingest[server]
pour inclure les dépendances serveur pour l'auto-hébergement.
Cependant, il peut être judicieux d'utiliser pipx
pour l'installation. Vous pouvez installer pipx
avec votre gestionnaire de paquets préféré.
brew install pipx apt install pipx scoop install pipx ...
Si vous utilisez pipx pour la première fois, exécutez :
pipx ensurepath
# install gitingest pipx install gitingest
🧩 Utilisation de l'extension navigateur
L'extension est open source sur lcandy2/gitingest-extension.
Les signalements de problèmes et demandes de fonctionnalités sont les bienvenus dans le dépôt.
💡 Utilisation en ligne de commande
L'outil en ligne de commande gitingest
permet d'analyser des bases de code et de créer un dump textuel de leur contenu.
# Basic usage (writes to digest.txt by default) gitingest /path/to/directory # From URL gitingest https://github.com/coderamp-labs/gitingest # or from specific subdirectory gitingest https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils
Pour les dépôts privés, utilisez l'option --token/-t
.
# Get your token from https://github.com/settings/personal-access-tokens gitingest https://github.com/username/private-repo --token github_pat_... # Or set it as an environment variable export GITHUB_TOKEN=github_pat_... gitingest https://github.com/username/private-repo # Include repository submodules gitingest https://github.com/username/repo-with-submodules --include-submodules
Par défaut, les fichiers listés dans .gitignore
sont ignorés. Utilisez --include-gitignored
si vous avez besoin de ces fichiers dans le digest.
Par défaut, le digest est écrit dans un fichier texte (digest.txt
) dans votre répertoire de travail actuel. Vous pouvez personnaliser la sortie de deux manières :
- Utilisez
--output/-o <nom_fichier>
pour écrire dans un fichier spécifique. - Utilisez
--output/-o -
pour envoyer directement versSTDOUT
(utile pour rediriger vers d'autres outils).
Voir plus d'options et détails d'utilisation avec :
gitingest --help
🐍 Utilisation du package Python
# Synchronous usage from gitingest import ingest summary, tree, content = ingest("path/to/directory") # or from URL summary, tree, content = ingest("https://github.com/coderamp-labs/gitingest") # or from a specific subdirectory summary, tree, content = ingest("https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils")
Pour les dépôts privés, vous pouvez passer un token :
# Using token parameter summary, tree, content = ingest("https://github.com/username/private-repo", token="github_pat_...") # Or set it as an environment variable import os os.environ["GITHUB_TOKEN"] = "github_pat_..." summary, tree, content = ingest("https://github.com/username/private-repo") # Include repository submodules summary, tree, content = ingest("https://github.com/username/repo-with-submodules", include_submodules=True)
Par défaut, cela n'écrira pas de fichier mais peut être activé avec l'argument output
.
# Asynchronous usage from gitingest import ingest_async import asyncio result = asyncio.run(ingest_async("path/to/directory"))
Utilisation dans Jupyter notebook
from gitingest import ingest_async # Use await directly in Jupyter summary, tree, content = await ingest_async("path/to/directory")
Ceci parce que les notebooks Jupyter sont asynchrones par défaut.
🐳 Auto-hébergement
Utilisation de Docker
-
Construisez l'image :
docker build -t gitingest .
-
Exécutez le conteneur :
docker run -d --name gitingest -p 8000:8000 gitingest
L'application sera disponible à l'adresse http://localhost:8000
.
Si vous l'hébergez sur un domaine, vous pouvez spécifier les noms d'hôtes autorisés via la variable d'environnement ALLOWED_HOSTS
.
# Default: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1". ALLOWED_HOSTS="example.com, localhost, 127.0.0.1"
Variables d'environnement
L'application peut être configurée à l'aide des variables d'environnement suivantes :
- ALLOWED_HOSTS : Liste d'hôtes autorisés séparés par des virgules (par défaut : "gitingest.com, *.gitingest.com, localhost, 127.0.0.1")
- GITINGEST_METRICS_ENABLED : Activer le serveur de métriques Prometheus (définir n'importe quelle valeur pour activer)
- GITINGEST_METRICS_HOST : Hôte pour le serveur de métriques (par défaut : "127.0.0.1")
- GITINGEST_METRICS_PORT : Port pour le serveur de métriques (par défaut : "9090")
- GITINGEST_SENTRY_ENABLED : Activer le suivi des erreurs Sentry (définir n'importe quelle valeur pour activer)
- GITINGEST_SENTRY_DSN : DSN Sentry (requis si Sentry est activé)
- GITINGEST_SENTRY_TRACES_SAMPLE_RATE : Taux d'échantillonnage pour les données de performance (par défaut : "1.0", plage : 0.0-1.0)
- GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE : Taux d'échantillonnage pour les sessions de profil (par défaut : "1.0", plage : 0.0-1.0)
- GITINGEST_SENTRY_PROFILE_LIFECYCLE : Mode de cycle de vie du profil (par défaut : "trace")
- GITINGEST_SENTRY_SEND_DEFAULT_PII : Envoyer les informations personnelles identifiables par défaut (par défaut : "true")
- S3_ALIAS_HOST : URL/CDN publique pour accéder aux ressources S3 (par défaut : "127.0.0.1:9000/gitingest-bucket")
- S3_DIRECTORY_PREFIX : Préfixe optionnel pour les chemins de fichiers S3 (si défini, préfixe tous les chemins S3 avec cette valeur)
Utilisation de Docker Compose
Le projet inclut un fichier compose.yml
qui vous permet d'exécuter facilement l'application dans des environnements de développement et de production.
Structure du fichier Compose
Le fichier compose.yml
utilise l'ancrage YAML avec &app-base
et <<: *app-base
pour définir une configuration commune partagée entre les services :
# Common base configuration for all services x-app-base: &app-base build: context: . dockerfile: Dockerfile ports: - "${APP_WEB_BIND:-8000}:8000" # Main application port - "${GITINGEST_METRICS_HOST:-127.0.0.1}:${GITINGEST_METRICS_PORT:-9090}:9090" # Metrics port # ... other common configurations
Services
Le fichier définit trois services :
-
app : Configuration du service de production
- Utilise le profil
prod
- Définit l'environnement Sentry sur "production"
- Configuré pour une opération stable avec
restart: unless-stopped
- Utilise le profil
-
app-dev : Configuration du service de développement
- Utilise le profil
dev
- Active le mode debug
- Monte le code source pour un développement en direct
- Utilise le rechargement à chaud pour un développement plus rapide
- Utilise le profil
-
minio : Stockage d'objets compatible S3 pour le développement
- Utilise le profil
dev
(disponible uniquement en mode développement) - Fournit un stockage compatible S3 pour le développement local
- Accessible via :
- API : Port 9000 (localhost:9000)
- Console Web : Port 9001 (localhost:9001)
- Identifiants admin par défaut :
- Nom d'utilisateur :
minioadmin
- Mot de passe :
minioadmin
- Nom d'utilisateur :
- Configurable via variables d'environnement :
MINIO_ROOT_USER
: Nom d'utilisateur admin personnalisé (par défaut : minioadmin)MINIO_ROOT_PASSWORD
: Mot de passe admin personnalisé (par défaut : minioadmin)
- Inclut un stockage persistant via volume Docker
- Crée automatiquement un bucket et des identifiants spécifiques à l'application :
- Nom du bucket :
gitingest-bucket
(configurable viaS3_BUCKET_NAME
) - Clé d'accès :
gitingest
(configurable viaS3_ACCESS_KEY
) - Clé secrète :
gitingest123
(configurable viaS3_SECRET_KEY
)
- Nom du bucket :
- Ces identifiants sont automatiquement transmis au service app-dev via des variables d'environnement :
S3_ENDPOINT
: URL du serveur MinIOS3_ACCESS_KEY
: Clé d'accès pour le bucket S3S3_SECRET_KEY
: Clé secrète pour le bucket S3S3_BUCKET_NAME
: Nom du bucket S3S3_REGION
: Région pour le bucket S3 (par défaut : us-east-1)S3_ALIAS_HOST
: URL/CDN publique pour accéder aux ressources S3 (par défaut : "127.0.0.1:9000/gitingest-bucket")
- Utilise le profil
Exemples d'utilisation
Pour exécuter l'application en mode développement :
docker compose --profile dev up
Pour exécuter l'application en mode production :
docker compose --profile prod up -d
Pour compiler et exécuter l'application :
docker compose --profile prod build docker compose --profile prod up -d
🤝 Contributions
Façons non techniques de contribuer
- Créer un Issue : Si vous trouvez un bug ou avez une idée pour une nouvelle fonctionnalité, veuillez créer un issue sur GitHub. Cela nous aidera à suivre et prioriser votre demande.
- Faites passer le mot : Si vous aimez Gitingest, partagez-le avec vos amis, collègues et sur les réseaux sociaux. Cela nous aidera à développer la communauté et à améliorer Gitingest.
- Utilisez Gitingest : Les meilleurs retours proviennent d'une utilisation réelle ! Si vous rencontrez des problèmes ou avez des idées d'amélioration, faites-le nous savoir en créant un issue sur GitHub ou en nous contactant sur Discord.
Façons techniques de contribuer
Gitingest vise à être accessible aux contributeurs débutants, avec une base de code simple en Python et HTML. Si vous avez besoin d'aide lors du développement, contactez-nous sur Discord. Pour des instructions détaillées sur comment faire une pull request, consultez CONTRIBUTING.md.
🛠️ Stack technique
- Tailwind CSS - Frontend
- FastAPI - Framework backend
- Jinja2 - Templating HTML
- tiktoken - Estimation de tokens
- posthog - Analytics exceptionnels
- Sentry - Suivi des erreurs et monitoring des performances
Vous cherchez un package JavaScript/FileSystemNode ?
Découvrez l'alternative NPM 📦 Repomix : https://github.com/yamadashy/repomix