I use aerc as my email client (naturally — I wrote it, after all), and I use git send-email to receive patches to many of my projects. I designed aerc specifically to be productive for this workflow, but there are a few extra things that I use in my personal aerc configuration that I thought were worth sharing briefly. This blog post will be boring and clerical, feel free to skip it unless it’s something you’re interested in.
When I want to review a patch, I first tell aerc to :cd sources/<that project>
, then I open up the patch and give it a read. If it needs work, I’ll
use “rq” (“reply quoted”), a keybinding which is available by default, to open
my editor with the patch pre-quoted to trim down and reply with feedback inline.
If it looks good, I use the first of my custom keybindings: “ga”, short for git
am. The entry in ~/.config/aerc/binds.conf
is:
ga = :pipe -mb git am -3<Enter>
This pipes the entire message (-m, in case I’m viewing a message part) into git am -3
(-3 uses a three-way merge, in case of conflicts), in the background
(-b). Then I’ll use C-t (ctrl-T), another keybinding which is included by
default, to open a terminal tab in that directory, where I can compile the code,
run the tests, and so on. When I’m done, I use the “gp” keybinding to push the
changes:
gp = :term git push<Enter>
This runs the command in a new terminal, so I can monitor the progress. Finally, I like to reply to the patch, letting the contributor know their work was merged and thanking them for the contribution. I have a keybinding for this, too:
rt = :reply -Tthanks<Enter>
My “thanks” template is at ~/.config/aerc/templates/thanks
and looks like
this:
Thanks!
{% raw %}
{{exec "{ git remote get-url --push origin;
git reflog -2 origin/master --pretty=format:%h; }
| xargs printf 'To %s\n %s..%s master -> master\n'" ""}}
{% endraw %}
That git command prints a summary of the most recent push to master. The result is that my editor is pre-filled with something like this:
Thanks!
To git@git.sr.ht:~sircmpwn/builds.sr.ht
7aabe74..191f4a0 master -> master
I occasionally append a few lines asking questions about follow-up work or clarifying the deployment schedule for the change.