Gitingest

Captura de pantalla de la página principal de Gitingest

PyPI Python Versions
CI

Ruff OpenSSF Scorecard
Licencia Descargas Estrellas en GitHub Discord
Trendshift

Convierte cualquier repositorio Git en un texto optimizado para prompts de LLMs.

También puedes reemplazar hub por ingest en cualquier URL de GitHub para acceder al resumen correspondiente.

gitingest.com · Extensión para Chrome · Complemento para Firefox

Deutsch | Español | Français | 日本語 | 한국어 | Português | Русский | 中文

🚀 Características

  • Contexto de código fácil: Obtén un resumen en texto desde una URL de repositorio Git o un directorio
  • Formateo inteligente: Salida optimizada para prompts de LLMs
  • Estadísticas sobre:
    • Estructura de archivos y directorios
    • Tamaño del extracto
    • Conteo de tokens
  • Herramienta CLI: Ejecútalo como comando de terminal
  • Paquete Python: Impórtalo en tu código

📚 Requisitos

📦 Instalación

Gitingest está disponible en PyPI. Puedes instalarlo usando pip:

pip install gitingest 

o

pip install gitingest[server] 

para incluir dependencias del servidor para alojamiento propio.

Sin embargo, puede ser buena idea usar pipx para instalarlo. Puedes instalar pipx usando tu gestor de paquetes preferido.

brew install pipx apt install pipx scoop install pipx ... 

Si es la primera vez que usas pipx, ejecuta:

pipx ensurepath 
# install gitingest pipx install gitingest 

🧩 Uso de la Extensión del Navegador

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

La extensión es de código abierto en lcandy2/gitingest-extension.

Se aceptan informes de problemas y solicitudes de funciones en el repositorio.

💡 Uso desde la línea de comandos

La herramienta de línea de comandos gitingest permite analizar bases de código y crear un volcado de texto con su contenido.

# 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 

Para repositorios privados, utiliza la opción --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 

Por defecto, se omiten los archivos listados en .gitignore. Usa --include-gitignored si necesitas incluir esos archivos en el resumen.

Por defecto, el resumen se escribe en un archivo de texto (digest.txt) en el directorio de trabajo actual. Puedes personalizar la salida de dos formas:

  • Usa --output/-o <nombre_de_archivo> para escribir en un archivo específico.
  • Usa --output/-o - para enviar la salida directamente a STDOUT (útil para redirigir a otras herramientas).

Consulta más opciones y detalles de uso con:

gitingest --help 

🐍 Uso del paquete 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") 

Para repositorios privados, puedes proporcionar 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) 

Por defecto, esto no escribirá un archivo, pero se puede habilitar con el argumento output.

# Asynchronous usage from gitingest import ingest_async import asyncio result = asyncio.run(ingest_async("path/to/directory")) 

Uso en cuadernos Jupyter

from gitingest import ingest_async # Use await directly in Jupyter summary, tree, content = await ingest_async("path/to/directory") 

Esto se debe a que los cuadernos Jupyter son asíncronos por defecto.

🐳 Autoalojamiento

Usando Docker

  1. Construye la imagen:

    docker build -t gitingest . 
  2. Ejecuta el contenedor:

    docker run -d --name gitingest -p 8000:8000 gitingest 

La aplicación estará disponible en http://localhost:8000.

Si la alojas en un dominio, puedes especificar los nombres de host permitidos mediante la variable de entorno ALLOWED_HOSTS.

 # Default: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1". ALLOWED_HOSTS="example.com, localhost, 127.0.0.1" 

Variables de Entorno

La aplicación puede configurarse utilizando las siguientes variables de entorno:

  • ALLOWED_HOSTS: Lista separada por comas de nombres de host permitidos (por defecto: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1")
  • GITINGEST_METRICS_ENABLED: Habilita el servidor de métricas Prometheus (asigna cualquier valor para activar)
  • GITINGEST_METRICS_HOST: Host para el servidor de métricas (por defecto: "127.0.0.1")
  • GITINGEST_METRICS_PORT: Puerto para el servidor de métricas (por defecto: "9090")
  • GITINGEST_SENTRY_ENABLED: Habilita el seguimiento de errores con Sentry (asigna cualquier valor para activar)
  • GITINGEST_SENTRY_DSN: DSN de Sentry (requerido si Sentry está activado)
  • GITINGEST_SENTRY_TRACES_SAMPLE_RATE: Tasa de muestreo para datos de rendimiento (por defecto: "1.0", rango: 0.0-1.0)
  • GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE: Tasa de muestreo para sesiones de perfil (por defecto: "1.0", rango: 0.0-1.0)
  • GITINGEST_SENTRY_PROFILE_LIFECYCLE: Modo de ciclo de vida del perfil (por defecto: "trace")
  • GITINGEST_SENTRY_SEND_DEFAULT_PII: Envía información personal identificable por defecto (por defecto: "true")
  • S3_ALIAS_HOST: URL/CDN pública para acceder a recursos S3 (por defecto: "127.0.0.1:9000/gitingest-bucket")
  • S3_DIRECTORY_PREFIX: Prefijo opcional para rutas de archivos S3 (si se establece, añade este valor como prefijo a todas las rutas S3)

Usando Docker Compose

El proyecto incluye un archivo compose.yml que te permite ejecutar fácilmente la aplicación tanto en entornos de desarrollo como de producción.

Estructura del Archivo Compose

El archivo compose.yml utiliza anclajes YAML con &app-base y <<: *app-base para definir configuraciones comunes compartidas entre servicios:

# 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 

Servicios

El archivo define tres servicios:

  1. app: Configuración del servicio de producción

    • Utiliza el perfil prod
    • Establece el entorno de Sentry como "production"
    • Configurado para operación estable con restart: unless-stopped
  2. app-dev: Configuración del servicio de desarrollo

    • Utiliza el perfil dev
    • Habilita el modo de depuración
    • Monta el código fuente para desarrollo en vivo
    • Usa recarga en caliente para un desarrollo más rápido
  3. minio: Almacenamiento de objetos compatible con S3 para desarrollo

    • Utiliza el perfil dev (solo disponible en modo desarrollo)
    • Proporciona almacenamiento compatible con S3 para desarrollo local
    • Accesible mediante:
    • Credenciales de administrador predeterminadas:
      • Usuario: minioadmin
      • Contraseña: minioadmin
    • Configurable mediante variables de entorno:
      • MINIO_ROOT_USER: Nombre de usuario personalizado (predeterminado: minioadmin)
      • MINIO_ROOT_PASSWORD: Contraseña personalizada (predeterminado: minioadmin)
    • Incluye almacenamiento persistente mediante volumen de Docker
    • Crea automáticamente un bucket y credenciales específicas para la aplicación:
      • Nombre del bucket: gitingest-bucket (configurable mediante S3_BUCKET_NAME)
      • Clave de acceso: gitingest (configurable mediante S3_ACCESS_KEY)
      • Clave secreta: gitingest123 (configurable mediante S3_SECRET_KEY)
    • Estas credenciales se pasan automáticamente al servicio app-dev mediante variables de entorno:
      • S3_ENDPOINT: URL del servidor MinIO
      • S3_ACCESS_KEY: Clave de acceso para el bucket S3
      • S3_SECRET_KEY: Clave secreta para el bucket S3
      • S3_BUCKET_NAME: Nombre del bucket S3
      • S3_REGION: Región para el bucket S3 (predeterminado: us-east-1)
      • S3_ALIAS_HOST: URL pública/CDN para acceder a recursos S3 (predeterminado: "127.0.0.1:9000/gitingest-bucket")

Ejemplos de Uso

Para ejecutar la aplicación en modo de desarrollo:

docker compose --profile dev up 

Para ejecutar la aplicación en modo de producción:

docker compose --profile prod up -d 

Para construir y ejecutar la aplicación:

docker compose --profile prod build docker compose --profile prod up -d 

🤝 Contribuciones

Formas no técnicas de contribuir

  • Crear un Issue: Si encuentras un error o tienes una idea para una nueva función, por favor crea un issue en GitHub. Esto nos ayudará a rastrear y priorizar tu solicitud.
  • Corre la Voz: Si te gusta Gitingest, por favor compártelo con tus amigos, colegas y en redes sociales. Esto nos ayudará a hacer crecer la comunidad y mejorar Gitingest aún más.
  • Usa Gitingest: ¡El mejor feedback proviene del uso en el mundo real! Si encuentras algún problema o tienes ideas para mejorar, háznoslo saber creando un issue en GitHub o contactándonos en Discord.

Formas técnicas de contribuir

Gitingest busca ser amigable para contribuidores primerizos, con un código base simple en Python y HTML. Si necesitas ayuda mientras trabajas con el código, contáctanos en Discord. Para instrucciones detalladas sobre cómo hacer un pull request, consulta CONTRIBUTING.md.

🛠️ Tecnologías

¿Buscas un paquete JavaScript/FileSystemNode?

Consulta la alternativa en NPM 📦 Repomix: https://github.com/yamadashy/repomix

🚀 Crecimiento del Proyecto

Star History Chart