git-timemachine

In recent years, I’ve seen several people decide to switch to Emacs.
There seem to be two or three compelling reasons that cause people to
go through the temporary slow-down of making this change:

org-mode: A tool for organizing documents,
maintaining TODO lists, and many other tasks. I’ve never used it
enough to get proficient with it, but I know many people swear by
it.

Magit: An Emacs-based front-end for git.
I use this every day, and it is awesome.

Emacs Lisp: Emacs Lisp
is the customization language for Emacs. But it’s more than that,
because most of the editor is written in it. That means that almost
all of the tools that were used to build the editor in the first
place are available to you as you customize Emacs and make it do
what you need it to.

I recently learned about another Emacs-based tool that deserves to
make this list of killer features that cause people to switch to Emacs.

I’ve been working on my talk for GoGaRuCo.
The core of the talk walks through a series of baby-step refactorings
in order to get some legacy code under control.

As I worked through the code to prepare for the talk, I committed
changes to a git repo after each tiny step. To make the slides, I
used git-timemachine to review what I’d done. Using the n and p
keys, I can jump forward and back in the history to see various before
and after views of the code. This is a very simple but powerful
workflow.

git-timemachine only seems to work with Emacs 24 or later; I was
unable to get it running in Emacs 23.

If you use Emacs and git, I highly recommend checking out
git-timemachine. I might even suggest giving Emacs a try so you can
use git-timemachine (and Magit while you’re at it).