Code Quality: - Add markdownlint to pre-commit hooks for consistent markdown formatting - Add missing type hints to constants and variables - Prefix helper functions with underscore for better encapsulation Documentation: - Update README.md to follow markdown best practices - Add docstrings to functions in process_query.py, server_utils.py and main.py Refactoring: - Remove redundant normalize_pattern function from client.py - Simplify logic in should_exclude function in ingest_from_query.py - Improve code organization in clone.py - Move async_timeout comment into function body for better context
3.7 KiB
GitIngest
Turn any Git repository into a prompt-friendly text ingest for LLMs.
You can also replace hub with ingest in any github url to access the coresponding digest
🚀 Features
- Easy code context: Get a text digest from a git repository URL or a directory
- Smart Formatting: Optimized output format for LLM prompts
- Statistics about:
- File and directory structure
- Size of the extract
- Token count
- CLI tool: Run it as a command (Currently on Linux only)
- Python package: Import it in your code
📦 Installation
pip install gitingest
💡 Command Line usage
The gitingest command line tool allows you to analyze codebases and create a text dump of their contents.
# Basic usage
gitingest /path/to/directory
# From url
gitingest https://github.com/cyclotruc/gitingest
# See more options
gitingest --help
This will write the digest in a text file (default digest.txt) in your current working directory.
🐛 Python package usage
from gitingest import ingest
summary, tree, content = ingest("path/to/directory")
# or from URL
summary, tree, content = ingest("https://github.com/cyclotruc/gitingest")
By default, this won't write a file but can be enabled with the output argument
🛠️ Using
- Tailwind CSS - Frontend
- FastAPI - Backend framework
- tiktoken - Token estimation
- apianalytics.dev - Simple Analytics
🌐 Self-host
-
Build the image:
docker build -t gitingest . -
Run the container:
docker run -d --name gitingest -p 8000:8000 gitingest
The application will be available at http://localhost:8000
Ensure environment variables are set before running the application or deploying it via Docker.
✔️ Contributing
Contributions are welcome!
Gitingest aims to be friendly for first time contributors, with a simple python and html codebase. If you need any help while working with the code, reach out to us on discord
Ways to contribute
- Provide your feedback and ideas on discord
- Open an Issue on github to report a bug
- Create a Pull request
- Fork the repository
- Make your changes and test them locally
- Open a pull request for review and feedback
🔧 Local dev
Environment Configuration
ALLOWED_HOSTS: Specify allowed hostnames for the application. Default:"gitingest.com,*.gitingest.com,gitdigest.dev,localhost". You can configure the application using the following environment variables:
ALLOWED_HOSTS="gitingest.local,localhost"
Run locally
-
Clone the repository
git clone https://github.com/cyclotruc/gitingest.git cd gitingest -
Install dependencies
pip install -r requirements.txt -
Run the application:
cd src uvicorn main:app --reload
