Skip to main content

gitree: git-aware project tree printing and zipping for docs and LLMs

Project description

gitree ๐ŸŒด

A replacement of "ls" for developers. An open-source python tool to analyze folder structures and to provide code context to LLMs. Published on PyPi


GitHub stars PyPI GitHub forks Contributors Issues closed PRs closed

[!NOTE] Instead of the full-name "gitree", you may use "gt" to call this tool


๐Ÿ“ฆ 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

gitree demo

Now try this for better visuals:

gt --emoji

# OR -e as alias for --emoji
gt -e

gitree demo

For printing the full structure of any directory or project:

gt --full -e

# OR -f as alias for --full (and then -e can just be used together with it)
gt -fe

gitree demo

For copying all C++ code in your project, with interactive selection:

gt --full --copy --interactive --only-types cpp

# OR alternaitvely, using alias
# -i for interactive, -c for copy and -f for full
gt -fci --only-types cpp

gitree demo

gitree demo

For zipping the whole project, respecting gitignore:

# creates project.zip in the same directory
gt --full --zip project

# OR alternatively, using alias
gt -fz project

gitree demo

For copying the whole project into a single file:

# Creates project.txt in the directory from where gt is run
# Default format for export is tree
gt --full --export project --format tree

# OR alternatively use alias
gt -fx project --format tree

# OR use other formats
gt -fx project --format json
gt -fx project --format md

gitree demo


๐Ÿงฉ 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

โš™๏ธ Common Arguments

General Options

Argument Description
-h, --help Show the help message with all available options and exit.
-v, --version Display the version number of the tool.
--verbose Enable logger output to the console. Helpful for debugging.
--config-user Create a default config.json file in the current directory and open it in the default editor.
--no-config Ignore both user-level and global-level config.json and use default and CLI values for configuration.

Semantic Flags (Quick Actions)

Argument Description
-f, --full Shortcut for --max-depth 5 - show full directory tree up to 5 levels deep.
-e, --emoji Show emojis in the output for better visual clarity.
-i, --interactive Use interactive mode for manual file selection after automatic filtering.
-c, --copy Copy file contents and project structure to clipboard (great for LLM prompts).
--only-types Include only specific code extensions (e.g., --only-types py cpp tsx).

Output & Export Options

Argument Description
-z, --zip 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. Default: tree.

Full CLI Arguments List (Click to expand)

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.
-a, --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.
--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):

gt

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitree-0.5.0.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitree-0.5.0-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file gitree-0.5.0.tar.gz.

File metadata

  • Download URL: gitree-0.5.0.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitree-0.5.0.tar.gz
Algorithm Hash digest
SHA256 b4b230907f0e0285513141e21a067e05f046ae5b0cc739a16772d46941f24762
MD5 d1c9c55e9dc105b2488f352b6fad452b
BLAKE2b-256 689d86e5c6fb9bdb4a648c34601f4d1f51f42b23e0e0eef776c543d486c36c9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitree-0.5.0.tar.gz:

Publisher: workflow.yml on ShahzaibAhmad05/gitree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gitree-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: gitree-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 40.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitree-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1686f4958f6b454c3d07d2b05f198f1c20241603efb6e684c4d737d4c9be7503
MD5 62b67905db92f8fd91240bf64428a771
BLAKE2b-256 455f4af758254154dad703e930b4efdc94de41da3775b8093887b385b7fe7efb

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitree-0.5.0-py3-none-any.whl:

Publisher: workflow.yml on ShahzaibAhmad05/gitree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page