Blog Archive

Click on a headline to read the teaser.

Bailing out of an in-progress git merge

Git has a number of features that have been around for some time, yet many people seem unaware of. git merge --abort seems to fall into this category. It was introduced in version 1.7.4 (35d2fff), which was released January 30, 2011. Read More ›
Jacob Helwig development git tips

Updated git rebase --interactive --autosquash commit preparation

Previously I wrote about git rebase --interactive --autosquash, and showed a couple of helper aliases to aid in creating the specially formatted commit messages used by --autosquash.

In 1.7.4, Git gained built-in versions of these helpers (specifically in d71b8ba and 89ac122). It is now possible to use the commit command directly (or much more simple aliases) to create fixup and squash commits for use with --autosquash. Read More ›
Jacob Helwig development git tips

How I use different fetch & push URLs in Git

I hate having to enter my ssh key passphrase just to fetch from public Git repositories where I have push access. Fortunately, since version 1.6.4 Git has had the ability to separately specify the URLs to use when fetching, and when pushing. In addition to no longer requiring me to have my SSH key loaded when I go to fetch, I’ve noticed that fetching is now faster without the overhead of SSH. Read More ›
Jacob Helwig git

Using Git's @{-1} notation

There are a number of features Git has had for some time that go largely unnoticed by most people. Being able to refer to branches using the @{-1} notation (and its - alias) is one of the features I use on a regular basis that most people seem unaware of, even though they’ve been around since version 1.6.2. Read More ›
Jacob Helwig git

Using Git's @{upstream} notation

One useful feature Git has had since 1.7.0 is the ability to refer to the branch that another one is tracking using [branch]@{upstream} notation. I’ve found this especially handy while working on projects with multiple committers. Read More ›
Jacob Helwig git

Making 'git push' a little smarter/safer

Without any additional command line options git push’s behavior is almost never what I actually want it to do, since I rarely wish to push more than one branch at once, and often work with multiple remotes where I have push access.

Even though I am generally in the habit of always supplying both the remote and a list of refs when pushing (git push <remote> <ref1> [..<refN>]) I’d rather not have anything potentially dangerous or unwanted happen if I happen to leave off the ref(s) (or very rarely both the remote and the ref(s)). Read More ›
Jacob Helwig git

Making Git a little less verbose

Git has some output that can be very helpful to people getting started with it. Once you’ve been using Git for a while, however, you may find that the advice that Git provides to help deal with certain situations just ends up taking up screen real estate. Fortunately, there is a way to turn off a number of these messages. Read More ›
Jacob Helwig git

Colorizing Git output

There is a simple tweak to make working with Git a lot nicer that people often don’t know about, or forget to do is turn on Git’s ability to colorize its output. Read More ›
Jacob Helwig git

Settling on Octopress

A while back, I ditched Mephisto in favor of a static site generator I’d written in Perl (WWW::StaticBlog). When setting up a new laptop, and preparing to write a new post, I discovered that one of its dependencies (Text::Multi) is no longer on CPAN. In my haste to set something up I ended up deploying a new version of the site using nanoc, before fully working out the kinks. Turns out that nanoc doesn’t really support having pygments output line numbers in the “table” format, and working on fixing this was more work than I was willing to put in when there are many alternatives out there. Read More ›
Jacob Helwig

Offline email with gmail, mutt, postfix and offlineimap

One of my co-workers recently asked me to send him my setup for being able to read & write email while fully disconnected from the internet using mutt. Read More ›
Jacob Helwig

Pitfalls with RPM and GPG

As part of automating the packaging process for Puppet Dashboard we ran into some baffling issues regarding the package signatures. Initially, we ended up with a package that was recognized as having a valid signature on some systems, but not others (Good with RPM 4.7.2, bad with Additionally, when we tried signing the package with our “normal” GPG keys to try and debug this, we were unable to get a good signature from any of the systems we were testing with.

After much cursing, and Googling, we were able to find the correct incantation to get past the gauntlet of bizarre RPM behavior. Read More ›
Jacob Helwig GPG RPM packaging

"Dear Jacob" Git advice: git add -u

I recently received a request that I start a “Dear Jacob” advice column for git, and thought that it was a pretty nifty idea. I needed a good excuse to post more frequently, and I do end up answering a lot of questions about Git for the people that I know.

Welcome to the first installment of the “Dear Jacob” Git advice column! Read More ›
Jacob Helwig git

Helper script for creating posts with WWW::StaticBlog

There’s always another yak that needs shaving. Since creating posts with WWW::StaticBlog wasn’t fast enough for my tastes, I made a small script to make it even faster! Read More ›
Jacob Helwig www-staticblog yak shaving

Ditching dynamic blog engines.

This content is old, and possibly out of date.

A while back, I’d ditched WordPress in favor of Mephisto. I’d grown tired of constantly being under attack from spammers, and really disliked that it was one gigantic PHP app.

Once I was on Mephisto, I really liked the syntax highlighting I got with the Ultraviolet Gem, but it requires Oniguruma, which was a pain to setup on my shared host (they have since added it to their hosts). Life was good.

Except that it wasn’t. It was a little annoying how long it took pages to come up in the “cold cache” case, and I’d actually gotten a few complaints about that. After this, I decided that I was just going to do away with “dynamic blog engines” entirely. Read More ›
Jacob Helwig mephisto perl ruby wordpress www-staticblog

Fun with the upcoming 1.7 release of Git: rebase --interactive --autosquash

The upcoming Git 1.7 has a lot of really nice improvements, and new features. One of the big new features is the --autosquash argument for git rebase --interactive. Read More ›
Jacob Helwig development git tips

Capistrano completion in zsh

I’ve decided to try out zsh for a while, and while I already get completions for most everything I want, out of the box, I am missing completions for Capistrano tasks.

I had been using brynary’s Bash Capistrano completion script. I was able to find a mailing list post about setting up Capistrano task completions for zsh, but it didn’t quite work for me. (show_tasks isn’t a valid task.) I also didn’t like throwing the .cap_tasks file in the top-level of the project. I already had a ~/.zsh_cache/ directory for caching zsh’s completions, so I decided to modify the script I found to put the cache file there, instead. Read More ›
Jacob Helwig capistrano completion zsh

Fixing the Oniguruma Gem for use on DreamHost

This content is old, and possibly out of date.

While looking at how to get syntax highlighted source back up on here after switching to Mephisto, I kept running across references to the Ultraviolet gem. Some of the dependencies are a little old (Oniguruma: Gem, Library), but the output looks very nice, from the examples I’d seen.

The problem comes in, that the Oniguruma gem won’t install without you already having the Oniguruma library installed (in a standard system location). This is a pretty well documented problem, with a simple fix. Read More ›
Jacob Helwig dreamhost gems oniguruma ruby

Unhappy with the standard Rails Authorization plugins

This content is old, and possibly out of date.

Recently, I’ve decided to start learning Ruby on Rails (2.3.4). Things have been going along more-or-less smoothly (I’m still not sure whether or not I hate ActiveRecord, or can tolerate it, but that’s a post for another time.). That is, until I started looking into the various plugins/frameworks for doing Authorization in Rails. Read More ›
Jacob Helwig authorization ruby ruby on rails

Git + Lighthouse

This content is old, and possibly out of date.

I’ve been playing around with Git,, and Lighthouse on a project of mine that’s recently been resurrected.

There is a pretty good update hook for integration called that I’ve been using, without any complaints. Unfortunately, I haven’t been able to find anything to integrate Git with Lighthouse that hasn’t needed modification out of the box. Read More ›
Jacob Helwig git hooks lighthouse

Soft resolution of Request Tracker tickets.

This content is old, and possibly out of date.

We wanted to be able to close a ticket, without actually “closing” it. Thus the “pending” ticket status was born. We can set a ticket’s status as “pending”, and have it automatically marked as “closed” n days later, if there haven’t been any replies in that time.

I have received permission from my employer to release this under the GNU GPLv2. Read More ›
Jacob Helwig extension perl rt