Gitingest
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
- Python 3.8+
- Para repositorios privados: Un Token de Acceso Personal (PAT) de GitHub. Genera tu token aquí!
📦 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
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 aSTDOUT
(ú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
-
Construye la imagen:
docker build -t gitingest .
-
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:
-
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
- Utiliza el perfil
-
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
- Utiliza el perfil
-
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:
- API: Puerto 9000 (localhost:9000)
- Consola Web: Puerto 9001 (localhost:9001)
- Credenciales de administrador predeterminadas:
- Usuario:
minioadmin
- Contraseña:
minioadmin
- Usuario:
- 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 medianteS3_BUCKET_NAME
) - Clave de acceso:
gitingest
(configurable medianteS3_ACCESS_KEY
) - Clave secreta:
gitingest123
(configurable medianteS3_SECRET_KEY
)
- Nombre del bucket:
- Estas credenciales se pasan automáticamente al servicio app-dev mediante variables de entorno:
S3_ENDPOINT
: URL del servidor MinIOS3_ACCESS_KEY
: Clave de acceso para el bucket S3S3_SECRET_KEY
: Clave secreta para el bucket S3S3_BUCKET_NAME
: Nombre del bucket S3S3_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")
- Utiliza el perfil
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
- Tailwind CSS - Frontend
- FastAPI - Framework de backend
- Jinja2 - Plantillas HTML
- tiktoken - Estimación de tokens
- posthog - Analíticas increíbles
- Sentry - Seguimiento de errores y monitoreo de rendimiento
¿Buscas un paquete JavaScript/FileSystemNode?
Consulta la alternativa en NPM 📦 Repomix: https://github.com/yamadashy/repomix