git ready

learn git one commit at a time
by Nick Quaranto

ribbon/catchup: reading new commits

committed 21 Oct 2011

I picked up this trick to use Git as a kind of feed-reader on Moro’s blog, so I thought I’d share it here:

Let’s say you want to stay up-to-date with a project – for example, an upstream repository you are contributing to, a smart developer you are trying to learn from, or an awesome library you’d just like to watch. How do you go about following the commits that are being pushed?

You could use RSS feeds, such as the ones offered by GitHub:

But let’s be honest: We would much rather read commits and diffs in the shell, like we are used to. (And as a bonus, we won’t be assaulted by webcomics, pictures of kittens, and any number of other distractions our feed reader has in store for us.)

So instead, we display new commits with git log, and use Git’s lightweight tag system to place a “ribbon” marker tag that keeps track of how far we have read.

A real-life ribbon marker

Simply add the following code to your ~/.gitconfig:

    ribbon = tag --force _ribbon origin/master
    catchup = log --patch --reverse --topo-order _ribbon..origin/master

Clone the project you want to watch, and type git ribbon to initialize the ribbon marker.

Now whenever you fetch or pull, use git catchup to read up on the latest changes in the origin/master branch. After you are done reading, update the ribbon marker with git ribbon.

Sweet, isn’t it?

By the way: If you do not like to read the individual commits in topic branches that were merged into origin/master, consider adding --first-parent -m to the catchup log command.

This is a guest post by Jo Liss. Jo likes JavaScript and created a solitaire game.