Tell the story of your Git project by creating video animations (.mp4) of your commit history directly from your Git repo.
Project description
git-story
Tell the story of your Git project by creating video animations (.mp4) of your commit history directly from your Git repo.
Use cases
- Visualizing Git projects
- Sharing desired parts of your workflow with your team
- Creating animated Git videos for blog posts or YouTube
- Helping newer developers learn Git
Features
- Run a single command in the terminal to generate a custom Git animation (.mp4) from your repo
- Specify any commit id or ref to start animating from (default:
HEAD
) - Specify the number of commits to include (default:
8
) - Ref labels are drawn by default for
HEAD
, branch names, and tags - Reverse commit ordering and reorient branch layout
- Works best with simpler branching structures, but should work with more complex ones as well
- Add custom branded intro/outro sequences if desired
- Dark mode and light mode
Video animation example
Requirements
- Python 3.9 or greater
- Pip (Package manager for Python)
- Manim (Community version)
- GitPython
Quickstart
-
Install GitPython
$ pip3 install gitpython
- Install
git-story
:
$ pip3 install git-story
- Browse to the Git repository you want create an animation from:
$ cd path/to/project/root
- Run the program:
$ git-story
-
A default animation
.mp4
file will be created using the most recent 8 commits on your checked-out Git branch. By default, video output file is created in the current directory, within a subdirectory calledgit-story_media
. The location this subdirectory is customizeable using the command line flag--media-dir=path/to/output
. -
Use command-line options for customization, see usage:
$ git-story -h
usage: git-story [-h] [--commits COMMITS] [--commit-id COMMIT_ID] [--hide-merged-chains] [--reverse] [--title TITLE] [--logo LOGO] [--outro-top-text OUTRO_TOP_TEXT]
[--outro-bottom-text OUTRO_BOTTOM_TEXT] [--show-intro] [--show-outro] [--max-branches-per-commit MAX_BRANCHES_PER_COMMIT] [--max-tags-per-commit MAX_TAGS_PER_COMMIT]
[--media-dir MEDIA_DIR] [--low-quality] [--light-mode] [--invert-branches]
optional arguments:
-h, --help show this help message and exit
--commits COMMITS The number of commits to display in the Git animation (default: 8)
--commit-id COMMIT_ID
The ref (branch/tag), or first 6 characters of the commit to animate backwards from (default: HEAD)
--hide-merged-chains Hide commits from merged branches, i.e. only display mainline commits (default: False)
--reverse Display commits in reverse order in the Git animation (default: False)
--title TITLE Custom title to display at the beginning of the animation (default: Git Story, by initialcommit.com)
--logo LOGO The path to a custom logo to use in the animation intro/outro (default: /usr/local/lib/python3.9/site-packages/git_story/logo.png)
--outro-top-text OUTRO_TOP_TEXT
Custom text to display above the logo during the outro (default: Thanks for using Initial Commit!)
--outro-bottom-text OUTRO_BOTTOM_TEXT
Custom text to display below the logo during the outro (default: Learn more at initialcommit.com)
--show-intro Add an intro sequence with custom logo and title (default: False)
--show-outro Add an outro sequence with custom logo and text (default: False)
--max-branches-per-commit MAX_BRANCHES_PER_COMMIT
Maximum number of branch labels to display for each commit (default: 2)
--max-tags-per-commit MAX_TAGS_PER_COMMIT
Maximum number of tags to display for each commit (default: 1)
--media-dir MEDIA_DIR
The path to output the animation data and video file (default: .)
--low-quality Render output video in low quality, useful for faster testing (default: False)
--light-mode Enable light-mode with white background (default: False)
--invert-branches Invert positioning of branches where applicable (default: False)
--speed SPEED A multiple of the standard 1x animation speed (ex: 2 = twice as fast, 0.5 = half as fast) (default: 1)
Command Examples
Default - draw 8 commits starting from HEAD
, from oldest to newest:
$ cd path/to/project/root
$ git-story
Customize the start commit and number of commits, and reverse their display order:
$ git-story --commit-id a1b2c3 --commits=6 --reverse
Invert the branch orientation, if multiple branches exist in the commit range:
$ git-story --invert-branches
Add an intro with custom title and logo:
$ git-story --commit-id dev --commits=10 --show-intro --title "My Git Repo" --logo path/to/logo.png
Add an outro with custom text and logo:
$ git-story --show-outro --outro-top-text "My Git Repo" --outro-bottom-text "Thanks for watching!" --logo path/to/logo.png
Customize the output video directory location:
$ git-story --media-dir=path/to/output
Use light mode for white background and black text, instead of the default black background with white text:
$ git-story --light-mode
Generate output video in low quality to speed up rendering time (useful for repeated testing):
$ git-story --low-quality
Installation
See QuickStart section for details on installing manim and GitPython dependencies. Then run:
$ pip3 install git-story
Learn More
Learn more about this tool on the git-story project page.
Authors
Jacob Stopak - on behalf of Initial Commit
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
File details
Details for the file git-story-0.1.4.tar.gz
.
File metadata
- Download URL: git-story-0.1.4.tar.gz
- Upload date:
- Size: 73.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5b0f45dca0646c8104ede268efd0ee75ba3f13838bf4e024cd629b0e44206e0 |
|
MD5 | 095c44d71b74266d183c01cbb0cdfc98 |
|
BLAKE2b-256 | 044b4a0ec1890e0957471d4e4ab56bb08f8ba54e83a6ed8b4c2c6a4a1798dd33 |
File details
Details for the file git_story-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: git_story-0.1.4-py3-none-any.whl
- Upload date:
- Size: 70.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be42bc0201fe5e7e220a0b92dc12f60187664e23cba005f3a624f37a9fc89925 |
|
MD5 | f8563d01fb78f161dc87c713f5f96920 |
|
BLAKE2b-256 | 32ce6dba4753b2e67c9755fcc750b608ee2292c159681590fd20757bbf1beb45 |