Tools for building time-lapse movies of git projects.
Status: Not ready for prime time. Some names are hardwired (contra the documentation); few errors are handled.
Run COMMAND ARGS... against each commit in the repo whose working directory is DIR.
Results are accumulated into ./git-each-build.
DIR defaults to the current directory.
Each commit is checked out to DIR.
On completion, DIR is restored to whatever commit it was originally set to.
If FILENAMES is supplied, only commits that mention a file in FILENAMES are checked out.
COMMAND is run with environment variables GIT_EACH_HASH and GIT_EACH_BUILD_DIR.
Its standard output is placed in $GIT_EACH_BUILD_DIR/stdout.txt.
It should place additional output files in $GIT_EACH_BUILD_DIR.
Output files are collected into subdirectories git-each-build/$isodate, where $isodate is the ISO datetime of the commit.
Examples:
git-each-build --stdout -- tree
git-each-build --stdout -- cloc .
git-each-build pages/resources.md -- snapshot-jekyll-html resources
git-each-build pages/resources.md -- snapshot-jekyll-page resourcesIf each build subdirectory contains only a single file (for example, stdout.txt),
you can flatten it in bash via:
mmv 'git-each-build/*/stdout.txt' git-each-build//#1.txt
find git-each-build -type d -empty -delete
Requirements: Ruby
Example: rm-consecutive-dups git-each-build
Convert the pages in HTML_PAGES into image files.
Example: make-html-page-images git-each-build/*/resources/index.html pages/image-%02d.png
Requirements: Install imgkit from https://wkhtmltopdf.org/downloads.html
Create a movie named timelapse.mp4 that animates the images in the frames
directory, default frames.
Requirements: Python, pip -f requirements.txt
Example: make-timelapse-movie git-each-build
git-each-build is vaguely like git-filter-branch,
except it accumulates outputs instead of re-writing the tree.
The git-time-machine Atom plugin displays an interactive commit plot for a single file.
Git Time-Lapse View is a Java program that lets you scroll through revisions.
MIT