gitree: git-aware project tree printing and zipping for docs and LLMs
Project description
gitree ๐ด
A CLI tool that helps generate structured context for LLMs by combining project files into a single, exportable format.
๐ฆ Installation
Install using pip (python package manager):
# Install the latest version using pip
pip install gitree
# to update gitree
pip install -U gitree
๐ก Usage
To use this tool, refer to this format:
gitree [paths] [other CLI args/flags]
To literally get started, I would recommend doing this:
Open a terminal in any project and run:
# paths should default to .
# This will scan gitignores by default
gitree
Now try this for better visuals:
gitree --emoji
You should see an output like this:
Gitree
โโ ๐ gitree/
โ โโ ๐ constants/
โ โ โโ ๐ __init__.py
โ โ โโ ๐ constant.py
โ โโ ๐ services/
โ โ โโ ๐ __init__.py
โ โ โโ ๐ draw_tree.py
โ โ โโ ๐ list_enteries.py
โ โ โโ ๐ parser.py
โ โ โโ ๐ zip_project.py
โ โโ ๐ utilities/
โ โ โโ ๐ __init__.py
โ โ โโ ๐ gitignore.py
โ โ โโ ๐ utils.py
โ โโ ๐ __init__.py
โ โโ ๐ main.py
โโ ๐ CODE_OF_CONDUCT.md
โโ ๐ CONTRIBUTING.md
โโ ๐ LICENSE
โโ ๐ pyproject.toml
โโ ๐ README.md
โโ ๐ requirements.txt
โโ ๐ SECURITY.md
Some useful commands you can use everyday with this tool:
# Copy all C++ code in your project,
# with interactive selection for those files
gitree **/*.cpp --copy -i
# Zip the whole project files (respecting gitignore)
# creates project.zip in the same directory
gitree --zip project
# Export the file contents of your project, in different formats to choose from
gitree --export project --format tree
gitree --export project --format json
gitree --export project --format md
๐งฉ How it Works
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Start โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ
โผ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Argument Parsing โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ
โผ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Files/Folders Selection โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ
โผ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Interactive Selection โ
โ (only if used) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โญโโโโโโโโโโโโโโโโโโฎ โญโโโโโโโโโโโโโโโโโโโโโโฎ
โ Zipping Service โ โ Drawing Service โ
โฐโโโโโโโโโโโโโโโโโโฏ โฐโโโโโโโโโโโโโโโโโโโโโโฏ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โ โผ โผ
โ โญโโโโโโโโโโโโโโโโโโฎ โญโโโโโโโโโโโโโโโโโโโฎ
โ โ Copy Service โ โ Export Service โ
โ โฐโโโโโโโโโโโโโโโโโโฏ โฐโโโโโโโโโโโโโโโโโโโฏ
โ โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โญโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Output & Finish โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โจ Overall Features
| Feature | Description |
|---|---|
| Tree Visualization | Generate a structure for any directory for visualizing and understanding the codebase |
| Smart File Selection | Control what's selected by the tool with custom ignore patterns, depth limits, and item caps |
| Interactive Selection | Gain full control of the output by reviewing what's selected by the file selection service |
| Copy Your Codebase | Instantly copy the whole codebase file contents to your clipboard to paste into LLMs |
| Multiple Export Formats | Export your codebase contents to files using tree, json and markdown formats |
| Zipping the Whole Project | Create project archives that automatically respect .gitignore rules |
| Large/Binary Files Handling | Automatically detects binary and large files and marks or skips them during export |
๐งช Continuous Integration (CI)
Gitree uses Continuous Integration (CI) to ensure code quality and prevent regressions on every change.
What CI Does
- Runs automated checks on every pull request
- Verifies that all CLI arguments work as expected
- Ensures the tool behaves consistently across updates
[!NOTE] CI tests are continuously expanding as new features are added.
โ๏ธ CLI Arguments
The following optional arguments are available for use:
General Options
| Argument | Description |
|---|---|
--version, -v |
Display the version number of the tool. |
--config-user |
Create a default config.json file in the current directory and open that file in the default editor. |
--no-config |
Ignore both user-level and global-level config.json and use default and CLI values for configuration. |
--verbose |
Enable logger output to the console. Enabling this prints a log after the full workflow run. Helpful for debugging. |
Output & Export Options
| Argument | Description |
|---|---|
--zip, -z |
Create a zip archive of the given directory respecting gitignore rules. |
--export |
Save project structure along with its contents to a file with the format specified using --format. |
--format |
Format output only. Options: tree, json, md. |
Listing Options
| Argument | Description |
|---|---|
--max-items |
Limit items to be selected per directory. |
--max-entries |
Limit entries (files/dirs) to be selected for the overall output. |
--max-depth |
Maximum depth to traverse when selecting files. |
--gitignore-depth |
Limit depth to look for during .gitignore processing. |
--hidden-items |
Show hidden files and directories. |
--exclude [pattern ...] |
Patterns of files to specifically exclude. |
--exclude-depth |
Limit depth for exclude patterns. |
--include [pattern ...] |
Patterns of files to specifically include. |
--include-file-types |
Include files of certain types. |
--copy, -c |
Copy file contents and project structure to clipboard. Similar to --export but copies to the clipboard instead. |
--emoji, -e |
Show emojis in the output. |
--interactive, -i |
Use interactive mode for further file selection. |
--files-first |
Print files before directories. |
--no-color |
Disable colored output. |
--no-contents |
Don't include file contents in export/copy. |
--no-contents-for [path ...] |
Exclude contents for specific files for export/copy. |
--max-file-size |
Maximum file size in MB to include in exports (default: 1.0). |
--override-files |
Override existing files. |
Listing Override Options
| Argument | Description |
|---|---|
--no-max-entries |
Disable --max-entries limit. |
--no-max-items |
Disable --max-items limit. |
--no-gitignore |
Do not use .gitignore rules. |
--no-files |
Hide files (show only directories). |
Installation (for Contributors)
Clone the repository:
git clone https://github.com/ShahzaibAhmad05/gitree
Move into the project directory:
cd gitree
Setup a Virtual Environment (to avoid package conflicts):
python -m venv .venv
Activate the virtual environment:
.venv/Scripts/Activate # on windows
.venv/bin/activate # on linux/macOS
[!WARNING] If you get an execution policy error on windows, run this:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Install dependencies in the virtual environment:
pip install -r requirements.txt
The tool is now available as a Python CLI in your virtual environment.
For running the tool, type (venv should be activated):
gitree
For running unit tests after making changes:
python -m tests
Contributions
[!TIP] This is YOUR tool. Issues and pull requests are always welcome.
Gitree is kept intentionally small and readable, so contributions that preserve simplicity and follow Contributing Guidelines are especially appreciated.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gitree-0.4.3.tar.gz.
File metadata
- Download URL: gitree-0.4.3.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b40a8779a5370a1c3be58b89df4909c997c33ac9e9fc09f5c3aef2157ba551fb
|
|
| MD5 |
dc4f34b3a9c4df116734f6a9b6e62763
|
|
| BLAKE2b-256 |
a29c4fc59d0e65df3138ec4381ff6d029a12a928df3407b3290cfdabcf5d1b99
|
Provenance
The following attestation bundles were made for gitree-0.4.3.tar.gz:
Publisher:
workflow.yml on ShahzaibAhmad05/gitree
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitree-0.4.3.tar.gz -
Subject digest:
b40a8779a5370a1c3be58b89df4909c997c33ac9e9fc09f5c3aef2157ba551fb - Sigstore transparency entry: 844652751
- Sigstore integration time:
-
Permalink:
ShahzaibAhmad05/gitree@0f3e1931666eb33f413842270460e6c09c22e474 -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/ShahzaibAhmad05
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@0f3e1931666eb33f413842270460e6c09c22e474 -
Trigger Event:
release
-
Statement type:
File details
Details for the file gitree-0.4.3-py3-none-any.whl.
File metadata
- Download URL: gitree-0.4.3-py3-none-any.whl
- Upload date:
- Size: 33.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cefc820253541de66bbfc2c1f68235e3413c2b2e666a9fe08660b0f92eda5c9
|
|
| MD5 |
727455c28776d42bff45f8c7ef487f23
|
|
| BLAKE2b-256 |
bdc7878bf5c5dc8babe9f4059e3d4c872a4713027fcd13e774d0f29400b5e60d
|
Provenance
The following attestation bundles were made for gitree-0.4.3-py3-none-any.whl:
Publisher:
workflow.yml on ShahzaibAhmad05/gitree
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitree-0.4.3-py3-none-any.whl -
Subject digest:
6cefc820253541de66bbfc2c1f68235e3413c2b2e666a9fe08660b0f92eda5c9 - Sigstore transparency entry: 844652755
- Sigstore integration time:
-
Permalink:
ShahzaibAhmad05/gitree@0f3e1931666eb33f413842270460e6c09c22e474 -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/ShahzaibAhmad05
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@0f3e1931666eb33f413842270460e6c09c22e474 -
Trigger Event:
release
-
Statement type: