Gitingest

Gitingestのフロントページスクリーンショット

PyPI Python Versions
CI

Ruff OpenSSF Scorecard
License Downloads GitHub Stars Discord
Trendshift

GitリポジトリをLLM向けのプロンプトに適したテキスト形式に変換します。

GitHubのURLでhubingestに置き換えるだけで、対応するダイジェストにアクセスできます。

gitingest.com · Chrome拡張機能 · Firefoxアドオン

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

🚀 特徴

  • 簡単なコードコンテキスト: GitリポジトリURLまたはディレクトリからテキストダイジェストを取得
  • スマートフォーマット: LLMプロンプト向けに最適化された出力形式
  • 統計情報:
    • ファイルとディレクトリ構造
    • 抽出サイズ
    • トークン数
  • CLIツール: シェルコマンドとして実行可能
  • Pythonパッケージ: コード内でインポートして使用可能

📚 要件

📦 インストール

GitingestはPyPIで利用可能です。 pipを使用してインストールできます:

pip install gitingest 

または

pip install gitingest[server] 

セルフホスティング用のサーバー依存関係を含める場合

ただし、pipxを使用してインストールするのが良いでしょう。 pipxはお好みのパッケージマネージャーでインストールできます。

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

初めてpipxを使用する場合は、以下を実行してください:

pipx ensurepath 
# install gitingest pipx install gitingest 

🧩 ブラウザ拡張機能の使用方法

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

この拡張機能はオープンソースで、lcandy2/gitingest-extension で公開されています。

リポジトリでは問題報告や機能リクエストを歓迎しています。

💡 コマンドラインの使用方法

gitingest コマンドラインツールを使用すると、コードベースを分析し、その内容をテキストダンプとして作成できます。

# 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 

プライベートリポジトリの場合は、--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 

デフォルトでは、.gitignore にリストされているファイルはスキップされます。ダイジェストにこれらのファイルを含める必要がある場合は、--include-gitignored を使用してください。

デフォルトでは、ダイジェストは現在の作業ディレクトリのテキストファイル (digest.txt) に書き込まれます。出力をカスタマイズするには2つの方法があります:

  • --output/-o <filename> を使用して特定のファイルに書き込みます。
  • --output/-o - を使用して直接 STDOUT に出力します(他のツールにパイプする場合に便利です)。

詳細なオプションと使用方法については以下を参照してください:

gitingest --help 

🐍 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") 

プライベートリポジトリの場合は、トークンを渡すことができます:

# 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) 

デフォルトではファイルは書き込まれませんが、output 引数で有効にできます。

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

Jupyter notebookでの使用方法

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

これは、Jupyter notebookがデフォルトで非同期であるためです。

🐳 セルフホスト

Dockerを使用する場合

  1. イメージをビルド:

    docker build -t gitingest . 
  2. コンテナを実行:

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

アプリケーションは http://localhost:8000 で利用可能になります。

ドメインでホストする場合、環境変数 ALLOWED_HOSTS を通じて許可するホスト名を指定できます。

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

環境変数

アプリケーションは以下の環境変数を使用して設定できます:

  • ALLOWED_HOSTS: 許可されるホスト名のカンマ区切りリスト(デフォルト: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1")
  • GITINGEST_METRICS_ENABLED: Prometheusメトリクスサーバーを有効化(任意の値を設定で有効化)
  • GITINGEST_METRICS_HOST: メトリクスサーバーのホスト(デフォルト: "127.0.0.1")
  • GITINGEST_METRICS_PORT: メトリクスサーバーのポート(デフォルト: "9090")
  • GITINGEST_SENTRY_ENABLED: Sentryエラートラッキングを有効化(任意の値を設定で有効化)
  • GITINGEST_SENTRY_DSN: Sentry DSN(Sentry有効時必須)
  • GITINGEST_SENTRY_TRACES_SAMPLE_RATE: パフォーマンスデータのサンプリングレート(デフォルト: "1.0", 範囲: 0.0-1.0)
  • GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE: プロファイルセッションのサンプリングレート(デフォルト: "1.0", 範囲: 0.0-1.0)
  • GITINGEST_SENTRY_PROFILE_LIFECYCLE: プロファイルライフサイクルモード(デフォルト: "trace")
  • GITINGEST_SENTRY_SEND_DEFAULT_PII: デフォルトの個人識別情報を送信(デフォルト: "true")
  • S3_ALIAS_HOST: S3リソースにアクセスするための公開URL/CDN(デフォルト: "127.0.0.1:9000/gitingest-bucket")
  • S3_DIRECTORY_PREFIX: S3ファイルパスのオプションプレフィックス(設定時、全てのS3パスにこの値をプレフィックスとして付与)

Docker Composeを使用する場合

このプロジェクトには、開発環境と本番環境の両方でアプリケーションを簡単に実行できるcompose.ymlファイルが含まれています。

Composeファイル構造

compose.ymlファイルでは、YAMLのアンカー機能(&app-base<<: *app-base)を使用して、サービス間で共有される共通設定を定義しています:

# 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 

サービス

このファイルでは3つのサービスが定義されています:

  1. app: 本番環境サービス設定

    • prod プロファイルを使用
    • Sentry環境を"production"に設定
    • restart: unless-stopped で安定稼働を確保
  2. app-dev: 開発環境サービス設定

    • dev プロファイルを使用
    • デバッグモードを有効化
    • ソースコードをマウントしてライブ開発を可能に
    • ホットリロードで開発効率向上
  3. minio: 開発用S3互換オブジェクトストレージ

    • dev プロファイル使用(開発モードでのみ利用可能)
    • ローカル開発用S3互換ストレージを提供
    • アクセス方法:
    • デフォルト管理者認証情報:
      • ユーザー名: minioadmin
      • パスワード: minioadmin
    • 環境変数で設定可能:
      • MINIO_ROOT_USER: カスタム管理者ユーザー名(デフォルト: minioadmin)
      • MINIO_ROOT_PASSWORD: カスタム管理者パスワード(デフォルト: minioadmin)
    • Dockerボリュームによる永続ストレージを内蔵
    • バケットとアプリケーション専用認証情報を自動生成:
      • バケット名: gitingest-bucket (S3_BUCKET_NAMEで設定可能)
      • アクセスキー: gitingest (S3_ACCESS_KEYで設定可能)
      • シークレットキー: gitingest123 (S3_SECRET_KEYで設定可能)
    • これらの認証情報は環境変数経由でapp-devサービスに自動伝達:
      • S3_ENDPOINT: MinIOサーバーURL
      • S3_ACCESS_KEY: S3バケットアクセスキー
      • S3_SECRET_KEY: S3バケットシークレットキー
      • S3_BUCKET_NAME: S3バケット名
      • S3_REGION: S3バケットリージョン(デフォルト: us-east-1)
      • S3_ALIAS_HOST: S3リソースアクセス用公開URL/CDN(デフォルト: "127.0.0.1:9000/gitingest-bucket")

使用例

開発モードでアプリケーションを実行するには:

docker compose --profile dev up 

本番モードでアプリケーションを実行するには:

docker compose --profile prod up -d 

アプリケーションをビルドして実行するには:

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

🤝 コントリビューション

技術的でない貢献方法

  • Issueの作成: バグを見つけた場合や新機能のアイデアがある場合は、GitHubでissueを作成してください。これにより、リクエストの追跡と優先順位付けが容易になります。
  • 広める: Gitingestが気に入ったら、友人や同僚、ソーシャルメディアで共有してください。コミュニティの成長とGitingestの改善に役立ちます。
  • Gitingestを使用する: 実際の使用から得られるフィードバックが最良です!問題が発生したり改善のアイデアがある場合は、GitHubでissueを作成するか、Discordでお知らせください。

技術的な貢献方法

Gitingestは初めてのコントリビューターにも優しいPythonとHTMLのシンプルなコードベースを目指しています。コード作業中に助けが必要な場合は、Discordでご連絡ください。プルリクエストの作成方法の詳細はCONTRIBUTING.mdをご覧ください。

🛠️ 技術スタック

  • Tailwind CSS - フロントエンド
  • FastAPI - バックエンドフレームワーク
  • Jinja2 - HTMLテンプレート
  • tiktoken - トークン推定
  • posthog - 優れた分析ツール
  • Sentry - エラートラッキングとパフォーマンス監視

JavaScript/FileSystemNodeパッケージをお探しですか?

NPM代替品📦 Repomixをご覧ください: https://github.com/yamadashy/repomix

🚀 プロジェクト成長

Star History Chart