Gitingest

Capture d'écran de la page d'accueil de Gitingest

PyPI Python Versions
CI

Ruff OpenSSF Scorecard
License Downloads GitHub Stars Discord
Trendshift

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

📦 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

Available in the Chrome Web Store Get The Add-on for Firefox Get from the Edge Add-ons

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 vers STDOUT (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

  1. Construisez l'image :

    docker build -t gitingest . 
  2. 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 :

  1. 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
  2. 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
  3. 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 :
    • Identifiants admin par défaut :
      • Nom d'utilisateur : minioadmin
      • Mot de passe : minioadmin
    • 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 via S3_BUCKET_NAME)
      • Clé d'accès : gitingest (configurable via S3_ACCESS_KEY)
      • Clé secrète : gitingest123 (configurable via S3_SECRET_KEY)
    • Ces identifiants sont automatiquement transmis au service app-dev via des variables d'environnement :
      • S3_ENDPOINT : URL du serveur MinIO
      • S3_ACCESS_KEY : Clé d'accès pour le bucket S3
      • S3_SECRET_KEY : Clé secrète pour le bucket S3
      • S3_BUCKET_NAME : Nom du bucket S3
      • S3_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")

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

Vous cherchez un package JavaScript/FileSystemNode ?

Découvrez l'alternative NPM 📦 Repomix : https://github.com/yamadashy/repomix

🚀 Croissance du projet

Star History Chart