lolcommits takes a snapshot with your webcam every time you git commit code, and archives a lolcat style image with it. Git blame has never been so much fun.
By default, the lol images are stored by a Github style short SHA in a
~/.lolcommits
directory created for you.
Please add your own lolcommit! Add to the People Using Lolcommits page on our wiki.
You'll need ImageMagick installed. Homebrew makes this easy. Simply do:
brew install imagemagick
Then install the gem with:
[sudo] gem install lolcommits
If you're using RVM (or rbenv), you can/should probably omit the sudo, but the default MacOSX Ruby install is dumb and requires it.
If Boxen is your thing, try this.
Install dependencies using your package manager of choice, for example in Ubuntu:
sudo apt-get install mplayer imagemagick libmagickwand-dev
For Ubuntu 14.04 or newer, you need to manually install ffmpeg since it no longer ships with the default Ubuntu sources. Downloads for ffmpeg
Then install the gem with:
gem install lolcommits
For more details, see Installing on Linux.
It all works but you'll need some more detailed instructions to get the dependencies installed. See the wiki page for Installing on Windows.
From within any git repository, simply do a lolcommits --enable
. From that
point on, any git commit will automatically trigger a lolcommit capture! All
lolcommits are stored in ~/.lolcommits
by default, placed in a subdirectory by
project name, and with a filename matching the commit hash.
You can also enable lolcommits across all your local git repos. Follow these
steps
to achieve this using git init
and the init.templatedir
setting.
Don't worry about it too much, half the fun of lolcommits is forgetting it's installed!
Ok, if you insist... Since you know about --enable
, common sense suggests
there is also a repository specific --disable
, hopefully you can guess what
that does. Other handy common commands include --last
, which will open for
display your most recent lolcommit image, or --browse
, which pops open the
directory containing all the lolcommit images for your current repository. You
can always do --help
for a full list of available commands.
NOTE: Any extra arguments you pass with the --enable command are auto-appended to the git-commit capture command. For example;
lolcommits --enable --delay=5 --animate=4 --fork
Will configure capturing of an animated gif (4 secs) after a 5 sec delay in a forked process. See the section below for more capture configuration variables.
lolcommits has some capture options for additional lulz. You can enable these via environment variables like so;
LOLCOMMITS_DEVICE
set a webcam device - mac and linux onlyLOLCOMMITS_ANIMATE
(in seconds) set time for capturing an animated gif - requires ffmpegLOLCOMMITS_DELAY
(in seconds) set delay persistently (for slow webcams to warmup)LOLCOMMITS_FORK
fork lolcommit runner (capture command forks to a new process, speedily returning you to your terminal)LOLCOMMITS_STEALTH
disable notification messages at commit timeLOLCOMMITS_DIR
set the output directory (defaults to ~/.lolcommits)
Or they can be set via the following arguments in the capture command (located
in your repository's .git/hooks/post-commit
file).
--device=DEVICE
or-d DEVICE
--animate=SECONDS
or-a SECONDS
--delay=SECONDS
or-w SECONDS
--fork
--stealth
To change the font (including point size, position & color), simply configure the default loltext plugin with this command:
lolcommits --config -p loltext
You can use lolcommits --devices
to list all attached video devices available
for capturing. Read how to configure commit
capturing
for more details.
Animated gifs can take a while to generate (depending on the number of seconds you capture and the capabilities of your machine). ffmpeg is required and can be installed like so;
- Linux - follow this guide
- OSX -
brew install ffmpeg
To enable, just set the LOLCOMMITS_ANIMATE
environment variable with the
number of seconds to capture. Like regular image captures you can use the env
variables LOLCOMMITS_DEVICE
and LOLCOMMITS_DELAY
to change the capture
device or delay time (seconds) before capturing.
If you find capturing an animated gif takes too long, try setting the
LOLCOMMITS_FORK=true
env variable. Animated gif captures are currently NOT
supported on Windows.
A growing number of plugins are now available allowing you to transform or share your lolcommits with others. The default plugin simply appends your commit message and sha to the captured image. Others can auto post to Twitter, Tumblr (and other services), or even translate your commit messages to lolspeak. They can be easily enabled, configured or disabled with our config command:
lolcommits --config
Check them out on our plugins page.
Try our trouble-shooting FAQ, or take a read through our wiki for more information. If you think something is broken or missing, raise a GitHub issue (and please take a little time to check if we haven't already addressed it).
To watch your face as it decays while you program, you can create a quick mpeg
of all your lolcommits snapshots (if you have imagemagick
and ffmpeg
installed):
convert `find . -type f -name "*.jpg" -print0 | xargs -0 ls -tlr | awk '{print $9}'` timelapse.mpeg