gitree: git-aware project tree printing and zipping for docs and LLMs
Project description
gitree ๐ด
A replacement of "ls" for developers. A python tool to analyze folder structures and to provide code context to LLMs. Published on PyPi
[!NOTE] You may use "gt" to call this tool, instead of the full-name "gitree"
๐ฆ Installation
Install using pip (python package manager):
# Install the latest version using pip
pip install gitree
# Alternatively, use pipx
pipx install gitree
# to update gitree
pip install -U gitree
๐ก Usage
To literally get started, I would recommend doing this:
Open a terminal in any project and run:
# paths should default to the current working directory
# This will scan gitignores by default
gitree
# OR use this short alias
gt
Now try this for better visuals:
gt --emoji
# OR -e as alias for --emoji
gt -e
You will see an output similar to this:
๐ gitree
โโ ๐ gitree
โโ ๐ tests
โโ ๐ CODE_OF_CONDUCT.md
โโ ๐ CONTRIBUTING.md
โโ ๐ LICENSE
โโ ๐ pyproject.toml
โโ ๐ README.md
โโ ๐ requirements.txt
โโ ๐ SECURITY.md
For printing the full structure of any directory or project:
gt --full
# OR -f as alias for --full
gt -f
Some useful commands you can use with this tool (for LLM prompting):
# Copy all C++ code in your project,
# with interactive selection for those files
gt **/*.cpp --copy -i
# For React-based frontend projects
gt --exclude **/*.json
# 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
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 |
โ๏ธ 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,--all |
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.4.tar.gz.
File metadata
- Download URL: gitree-0.4.4.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 |
7f3763514877806ec48d4d2357d38e3a2d761f30ff5cf723a4a6d3b635ec59de
|
|
| MD5 |
07cc516c0a4e2a65c204e44f808639f2
|
|
| BLAKE2b-256 |
d501ec8e882f5666a062422b4ef64892e5421f0c7212477502de96600d09ffdf
|
Provenance
The following attestation bundles were made for gitree-0.4.4.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.4.tar.gz -
Subject digest:
7f3763514877806ec48d4d2357d38e3a2d761f30ff5cf723a4a6d3b635ec59de - Sigstore transparency entry: 844681301
- Sigstore integration time:
-
Permalink:
ShahzaibAhmad05/gitree@1152c29352d731d48f53f15749343808a656fc5e -
Branch / Tag:
refs/tags/v0.4.4 - Owner: https://github.com/ShahzaibAhmad05
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@1152c29352d731d48f53f15749343808a656fc5e -
Trigger Event:
release
-
Statement type:
File details
Details for the file gitree-0.4.4-py3-none-any.whl.
File metadata
- Download URL: gitree-0.4.4-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 |
bc9cfb1cb63380e333de42d8521c885d71dccda950930c12feadc5e47cd68504
|
|
| MD5 |
770edd876a5fb7f5c52437bde56c14a3
|
|
| BLAKE2b-256 |
832ea943b2b9cb5e699dadc4b47b1eb85d76cc3681a0167153f730d28b0dfefb
|
Provenance
The following attestation bundles were made for gitree-0.4.4-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.4-py3-none-any.whl -
Subject digest:
bc9cfb1cb63380e333de42d8521c885d71dccda950930c12feadc5e47cd68504 - Sigstore transparency entry: 844681303
- Sigstore integration time:
-
Permalink:
ShahzaibAhmad05/gitree@1152c29352d731d48f53f15749343808a656fc5e -
Branch / Tag:
refs/tags/v0.4.4 - Owner: https://github.com/ShahzaibAhmad05
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@1152c29352d731d48f53f15749343808a656fc5e -
Trigger Event:
release
-
Statement type: