Gitingest
Transforme qualquer repositório Git em um texto otimizado para prompts de LLMs.
Você também pode substituir hub
por ingest
em qualquer URL do GitHub para acessar o resumo correspondente.
gitingest.com · Extensão para Chrome · Complemento para Firefox
Deutsch | Español | Français | 日本語 | 한국어 | Português | Русский | 中文
🚀 Recursos
- Contexto de código fácil: Obtenha um resumo em texto a partir de um URL de repositório Git ou de um diretório
- Formatação inteligente: Saída otimizada para prompts de LLMs
- Estatísticas sobre:
- Estrutura de arquivos e diretórios
- Tamanho do extrato
- Contagem de tokens
- Ferramenta CLI: Execute como um comando de terminal
- Pacote Python: Importe em seu código
📚 Requisitos
- Python 3.8+
- Para repositórios privados: Um Token de Acesso Pessoal (PAT) do GitHub. Gere seu token aqui!
📦 Instalação
Gitingest está disponível no PyPI. Você pode instalá-lo usando pip
:
pip install gitingest
ou
pip install gitingest[server]
para incluir dependências do servidor para hospedagem própria.
No entanto, pode ser uma boa ideia usar pipx
para instalá-lo. Você pode instalar o pipx
usando seu gerenciador de pacotes preferido.
brew install pipx apt install pipx scoop install pipx ...
Se estiver usando pipx pela primeira vez, execute:
pipx ensurepath
# install gitingest pipx install gitingest
🧩 Uso da Extensão de Navegador
A extensão é de código aberto em lcandy2/gitingest-extension.
Problemas e solicitações de recursos são bem-vindos no repositório.
💡 Uso na linha de comando
A ferramenta de linha de comando gitingest
permite analisar bases de código e criar um despejo de texto de seus conteúdos.
# 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 repositórios privados, use a opção --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 padrão, arquivos listados no .gitignore
são ignorados. Use --include-gitignored
se precisar desses arquivos no resumo.
Por padrão, o resumo é escrito em um arquivo de texto (digest.txt
) no seu diretório de trabalho atual. Você pode personalizar a saída de duas formas:
- Use
--output/-o <nome_do_arquivo>
para escrever em um arquivo específico. - Use
--output/-o -
para enviar diretamente paraSTDOUT
(útil para redirecionar para outras ferramentas).
Veja mais opções e detalhes de uso com:
gitingest --help
🐍 Uso do pacote 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 repositórios privados, você pode passar um 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 padrão, isso não grava um arquivo, mas pode ser habilitado com o argumento output
.
# Asynchronous usage from gitingest import ingest_async import asyncio result = asyncio.run(ingest_async("path/to/directory"))
Uso no Jupyter notebook
from gitingest import ingest_async # Use await directly in Jupyter summary, tree, content = await ingest_async("path/to/directory")
Isso ocorre porque os notebooks Jupyter são assíncronos por padrão.
🐳 Auto-hospedagem
Usando Docker
-
Construa a imagem:
docker build -t gitingest .
-
Execute o contêiner:
docker run -d --name gitingest -p 8000:8000 gitingest
A aplicação estará disponível em http://localhost:8000
.
Se estiver hospedando em um domínio, você pode especificar os nomes de host permitidos através da variável de ambiente ALLOWED_HOSTS
.
# Default: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1". ALLOWED_HOSTS="example.com, localhost, 127.0.0.1"
Variáveis de Ambiente
O aplicativo pode ser configurado usando as seguintes variáveis de ambiente:
- ALLOWED_HOSTS: Lista separada por vírgulas de nomes de hosts permitidos (padrão: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1")
- GITINGEST_METRICS_ENABLED: Ativar servidor de métricas Prometheus (defina qualquer valor para ativar)
- GITINGEST_METRICS_HOST: Host para o servidor de métricas (padrão: "127.0.0.1")
- GITINGEST_METRICS_PORT: Porta para o servidor de métricas (padrão: "9090")
- GITINGEST_SENTRY_ENABLED: Ativar rastreamento de erros Sentry (defina qualquer valor para ativar)
- GITINGEST_SENTRY_DSN: Sentry DSN (obrigatório se Sentry estiver ativado)
- GITINGEST_SENTRY_TRACES_SAMPLE_RATE: Taxa de amostragem para dados de desempenho (padrão: "1.0", intervalo: 0.0-1.0)
- GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE: Taxa de amostragem para sessões de perfil (padrão: "1.0", intervalo: 0.0-1.0)
- GITINGEST_SENTRY_PROFILE_LIFECYCLE: Modo de ciclo de vida do perfil (padrão: "trace")
- GITINGEST_SENTRY_SEND_DEFAULT_PII: Enviar informações pessoais identificáveis padrão (padrão: "true")
- S3_ALIAS_HOST: URL/CDN público para acessar recursos S3 (padrão: "127.0.0.1:9000/gitingest-bucket")
- S3_DIRECTORY_PREFIX: Prefixo opcional para caminhos de arquivos S3 (se definido, prefixa todos os caminhos S3 com este valor)
Usando Docker Compose
O projeto inclui um arquivo compose.yml
que permite executar facilmente a aplicação em ambientes de desenvolvimento e produção.
Estrutura do Arquivo Compose
O arquivo compose.yml
utiliza ancoragem YAML com &app-base
e <<: *app-base
para definir configurações comuns compartilhadas entre os serviços:
# 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
Serviços
O arquivo define três serviços:
-
app: Configuração do serviço de produção
- Utiliza o perfil
prod
- Define o ambiente Sentry como "production"
- Configurado para operação estável com
restart: unless-stopped
- Utiliza o perfil
-
app-dev: Configuração do serviço de desenvolvimento
- Utiliza o perfil
dev
- Ativa o modo de depuração
- Monta o código-fonte para desenvolvimento em tempo real
- Utiliza recarregamento automático para desenvolvimento mais rápido
- Utiliza o perfil
-
minio: Armazenamento de objetos compatível com S3 para desenvolvimento
- Utiliza o perfil
dev
(disponível apenas em modo de desenvolvimento) - Fornece armazenamento compatível com S3 para desenvolvimento local
- Acessível via:
- API: Porta 9000 (localhost:9000)
- Console Web: Porta 9001 (localhost:9001)
- Credenciais padrão de administrador:
- Nome de usuário:
minioadmin
- Senha:
minioadmin
- Nome de usuário:
- Configurável via variáveis de ambiente:
MINIO_ROOT_USER
: Nome de usuário personalizado (padrão: minioadmin)MINIO_ROOT_PASSWORD
: Senha personalizada (padrão: minioadmin)
- Inclui armazenamento persistente via volume Docker
- Cria automaticamente um bucket e credenciais específicas para a aplicação:
- Nome do bucket:
gitingest-bucket
(configurável viaS3_BUCKET_NAME
) - Chave de acesso:
gitingest
(configurável viaS3_ACCESS_KEY
) - Chave secreta:
gitingest123
(configurável viaS3_SECRET_KEY
)
- Nome do bucket:
- Essas credenciais são passadas automaticamente para o serviço app-dev via variáveis de ambiente:
S3_ENDPOINT
: URL do servidor MinIOS3_ACCESS_KEY
: Chave de acesso para o bucket S3S3_SECRET_KEY
: Chave secreta para o bucket S3S3_BUCKET_NAME
: Nome do bucket S3S3_REGION
: Região para o bucket S3 (padrão: us-east-1)S3_ALIAS_HOST
: URL pública/CDN para acessar recursos S3 (padrão: "127.0.0.1:9000/gitingest-bucket")
- Utiliza o perfil
Exemplos de Uso
Para executar o aplicativo em modo de desenvolvimento:
docker compose --profile dev up
Para executar o aplicativo em modo de produção:
docker compose --profile prod up -d
Para compilar e executar o aplicativo:
docker compose --profile prod build docker compose --profile prod up -d
🤝 Contribuições
Formas não técnicas de contribuir
- Criar uma Issue: Se encontrar um bug ou tiver uma ideia para um novo recurso, por favor crie uma issue no GitHub. Isso nos ajudará a rastrear e priorizar sua solicitação.
- Divulgar: Se você gosta do Gitingest, por favor compartilhe com seus amigos, colegas e nas redes sociais. Isso nos ajudará a crescer a comunidade e tornar o Gitingest ainda melhor.
- Usar o Gitingest: O melhor feedback vem do uso real! Se encontrar qualquer problema ou tiver ideias para melhorias, por favor nos avise criando uma issue no GitHub ou entrando em contato conosco no Discord.
Formas técnicas de contribuir
O Gitingest busca ser amigável para contribuidores iniciantes, com uma base de código simples em Python e HTML. Se precisar de ajuda durante o trabalho com o código, entre em contato conosco no Discord. Para instruções detalhadas sobre como fazer um pull request, consulte CONTRIBUTING.md.
🛠️ Stack
- Tailwind CSS - Frontend
- FastAPI - Backend framework
- Jinja2 - HTML templating
- tiktoken - Token estimation
- posthog - Amazing analytics
- Sentry - Error tracking and performance monitoring
Procurando um pacote JavaScript/FileSystemNode?
Confira a alternativa NPM 📦 Repomix: https://github.com/yamadashy/repomix