git-animate

Vim keystroke timelapse generator
git clone https://git.mitxela.com/git-animate.git
Log | Files | Refs | README

Branches

Name Last commit date Author
master2020-04-19 01:13:36 +0100mitxela

File Tree (HEAD)

Name Size
README.md1.032K
playback.py1.677K
process.py825B
requirements.txt54B

History

* 3646c2b (HEAD -> master) | mitxela 2020-04-19 01:13 | Update README.md | * 75f0998 | mitxela 2020-04-19 01:04 | Add shebangs and make whitespace consistent | * ff68202 | mitxela 2020-04-19 01:02 | Pass filenames as command arguments | * 92915e0 | Matheus Pinheiro 2020-04-13 19:38 | Removed useless print | * 0ed8e2a | Matheus Pinheiro 2020-04-13 19:33 | Cleaner comment | * 18740fe | Matheus Pinheiro 2020-04-13 19:30 | Updated README to explain file filtering | * b7a4b40 | Matheus Pinheiro 2020-04-13 19:27 | Added requirements to README | * aab7a06 | Matheus Pinheiro 2020-04-13 19:26 | Python 3.7 adaptions and requirements | * 16d400a mitxela 2018-12-06 03:40 Initial commit

Contents of README.md:

git-animate

Reads through a git repo and turns each commit into a series of vim keystrokes. The result is a pseudo-timelapse which almost looks like it's being typed out by a real person. Results vary depending on how frequent the commits were. It's also still only doing linewise diffs, so even a single byte change means the whole line is re-typed.

Only works on a single file. It is a good idea to rebase any merge commits so that the history reads as if it was written by a single author.

pip install -r requirements.txt

process.py reads the git history and outputs the patches as a list of tuples representing changes. If the repo contains multiple files, specify a filename to filter as an argument. E.g. ./process.py gbjs.htm > patches.txt Multiple filenames can be provided if the file was renamed.

playback.py reads the patches file and turns it into keystrokes. Run the script and then focus on a new terminal window. Hold esc to abort.

These scripts were used to produce this video.