Gitingest

Captura de tela da página inicial do Gitingest

PyPI Python Versions
CI

Ruff OpenSSF Scorecard
Licença Downloads Estrelas no GitHub Discord
Trendshift

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

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

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 para STDOUT (ú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

  1. Construa a imagem:

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

  1. 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
  2. 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
  3. 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:
    • Credenciais padrão de administrador:
      • Nome de usuário: minioadmin
      • Senha: minioadmin
    • 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 via S3_BUCKET_NAME)
      • Chave de acesso: gitingest (configurável via S3_ACCESS_KEY)
      • Chave secreta: gitingest123 (configurável via S3_SECRET_KEY)
    • Essas credenciais são passadas automaticamente para o serviço app-dev via variáveis de ambiente:
      • S3_ENDPOINT: URL do servidor MinIO
      • S3_ACCESS_KEY: Chave de acesso para o bucket S3
      • S3_SECRET_KEY: Chave secreta para o bucket S3
      • S3_BUCKET_NAME: Nome do bucket S3
      • S3_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")

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

Procurando um pacote JavaScript/FileSystemNode?

Confira a alternativa NPM 📦 Repomix: https://github.com/yamadashy/repomix

🚀 Crescimento do Projeto

Star History Chart