Skip to main content

A tool to visualize the commit history of a Git repository.

Project description

Commit Cartographer

A Python tool that generates visual flowcharts of Git repository activity by analyzing commit patterns across directories.

Features

  • ๐Ÿ” Intelligent Analysis: Counts commits per directory while focusing only on currently existing structure
  • ๐Ÿ“Š Visual Representation: Generates Mermaid flowcharts with directory relationships
  • ๐ŸŽจ Color Gradients: Uses a 10-step color gradient to represent commit density
  • ๐ŸŒณ Directory Depth: Supports up to 4 levels of directory nesting
  • ๐Ÿ“ Repository Structure: Shows parent-child relationships between directories

Installation

To use this project, ensure you have uv installed.

Usage

To run the tool, execute the following command in your terminal:

uv run commit-cartographer/cli.py [path_to_your_repo]

If no path is provided, it defaults to the current directory.

Output

The script generates a Markdown file named git_activity.md, which contains the Mermaid flowchart diagram representing the commit activity in the specified Git repository.

Example

After running the script, you will find a git_activity.md file with content similar to the following:

flowchart LR
    root_node[/root\]
    style root_node fill:#ffffff,stroke:#333,stroke-width:2px
    root_node --> node_src[/src\]
    style node_src fill:#ff00ff,stroke:#333,stroke-width:2px
    root_node --> node_cla[/cla\]
    style node_cla fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_aws[/aws\]
    style node_src_aws fill:#55aaff,stroke:#333,stroke-width:2px
    root_node --> node_icons[/icons\]
    style node_icons fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_php[/php\]
    style node_src_php fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_az[/az\]
    style node_src_az fill:#00ffff,stroke:#333,stroke-width:2px
    node_src_az --> node_src_az_2.53.0[/2.53.0\]
    style node_src_az_2.53.0 fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_heroku[/heroku\]
    style node_src_heroku fill:#00ffff,stroke:#333,stroke-width:2px
    root_node --> node_.vscode[/.vscode\]
    style node_.vscode fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_infracost[/infracost\]
    style node_src_infracost fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_fig[/fig\]
    style node_src_fig fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_usermn[/usermn\]
    style node_src_usermn fill:#00ffff,stroke:#333,stroke-width:2px
    node_src_usermn --> node_src_usermn_sdc[/sdc\]
    style node_src_usermn_sdc fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_deno[/deno\]
    style node_src_deno fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_dotnet[/dotnet\]
    style node_src_dotnet fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_example[/example\]
    style node_src_example fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_shopify[/shopify\]
    style node_src_shopify fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_task[/task\]
    style node_src_task fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_capgo[/capgo\]
    style node_src_capgo fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_wordpress[/wordpress\]
    style node_src_wordpress fill:#00ffff,stroke:#333,stroke-width:2px
    root_node --> node_.devcontainer[/.devcontainer\]
    style node_.devcontainer fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_magnolia[/magnolia\]
    style node_src_magnolia fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_gcloud[/gcloud\]
    style node_src_gcloud fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_python[/python\]
    style node_src_python fill:#00ffff,stroke:#333,stroke-width:2px
    node_src --> node_src_preset[/preset\]
    style node_src_preset fill:#00ffff,stroke:#333,stroke-width:2px
    root_node --> node_.husky[/.husky\]
    style node_.husky fill:#00ffff,stroke:#333,stroke-width:2px

You can also add the --style option to generate a tree diagram:

uv run commit-cartographer/cli.py [path_to_your_repo] --style tree
root/
โ””โ”€โ”€ orchestration/ (26 commits)
    โ””โ”€โ”€ assets/ (20 commits)
        โ””โ”€โ”€ dbt/ (4 commits)
        โ””โ”€โ”€ ebirdapi/ (14 commits)
            โ””โ”€โ”€ .dlt/ (2 commits)
            โ””โ”€โ”€ schemas/ (4 commits)
                โ””โ”€โ”€ export/ (2 commits)
                โ””โ”€โ”€ import/ (2 commits)
    โ””โ”€โ”€ utils/ (2 commits)
โ””โ”€โ”€ orchestration_tests/ (4 commits)
โ””โ”€โ”€ schemas/ (10 commits)
    โ””โ”€โ”€ export/ (5 commits)
    โ””โ”€โ”€ import/ (5 commits)
โ””โ”€โ”€ scripts/ (3 commits)
โ””โ”€โ”€ transformation/ (57 commits)
    โ””โ”€โ”€ analyses/ (1 commits)
    โ””โ”€โ”€ macros/ (1 commits)
    โ””โ”€โ”€ models/ (43 commits)
        โ””โ”€โ”€ sources/ (6 commits)
            โ””โ”€โ”€ ebirdapi/ (6 commits)
        โ””โ”€โ”€ staging/ (37 commits)
            โ””โ”€โ”€ docs/ (21 commits)
    โ””โ”€โ”€ seeds/ (1 commits)
    โ””โ”€โ”€ snapshots/ (1 commits)
    โ””โ”€โ”€ tests/ (1 commits)

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue for any suggestions or improvements.

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

commit_cartographer-0.1.2.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

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

commit_cartographer-0.1.2-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file commit_cartographer-0.1.2.tar.gz.

File metadata

  • Download URL: commit_cartographer-0.1.2.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.25

File hashes

Hashes for commit_cartographer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a49a1d754913f2d1b8823e0c549ea3a75332b14e7e8a439dc58c29120f2df7f9
MD5 9ed3648e7d15f9042f5de50a9e25e50c
BLAKE2b-256 e1d1677e061747f75db31a7cd375abd4f644db71e6fb232796b1368369bf5411

See more details on using hashes here.

File details

Details for the file commit_cartographer-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for commit_cartographer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0ba8bf0ee5d855499d9e9ff7f5ceafb341302aa265aa5928fdbe96e76d9ff49a
MD5 f9274f408639b99da3d5ef703218877a
BLAKE2b-256 9b44a52d21ff6ff17395806b118c8cd244ee03fd2d5de44c15f15cf9cf7cd1af

See more details on using hashes here.

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