Using git to generate a changelog for your blog

Unrelated, but what did you do to set up the changelog at the bottom of your posts?


A long time ago, Tom Miller talked about how frustrating it is when you come back to a blog page and there’s something… missing or changed. We elaborated into how cool it would be to have a living document for different topics on your blog, instead of posting a new git manifesto every year, just have a URL with the latest copy and all the changes.

I haven’t gone all the way that direction yet… I’ve got a couple private mini-essays I’ll link around, but I did implement the following. My blog uses middleman, so every file and every blog post has a git history. I use the Git gem to pull the git commits, and use the simple_format ActionView helper to display it.

  @git ='./').log.object(file)
  if @git.size > 1
  <details class="blog__changes">
      <% @git.each do |commit| %>
          <b class="blog__changes__date"><%= commit.author_date %></b>
          <%= simple_format(commit.message) %>
      <% end %>
<% end %>

There are some old pages where I don’t use good git practices, and it hurts that it shows, but by and large a reader can see what I’ve changed, whether I added a new company to my EDC bag post, or fixed a typo in a prayer.

I’m pretty sure the basic concept will work with other file-based blog systems… let me know if you use it!

  • 2020-06-18 19:26:02 +0000

    Move everything to CST

    Don't know why I didn't do that before. It caused _no_ end of

  • 2019-11-15 01:21:38 +0000

    Remove Tag: programming

    `code` is the same tag and has more coverage.

  • 2019-11-08 22:48:11 +0000

    Turn the `-` bullet into an `&mdash;`

  • 2019-11-08 22:47:17 +0000

    Add final sentence

  • 2019-11-08 22:46:33 +0000

    New post: git changelog