From 06091bbbb351adb4dcae21dd12241344ae161439 Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Fri, 22 Apr 2022 22:05:21 -0700 Subject: [PATCH] git send-email poast --- content/posts/oh-no-git-send-email/index.md | 131 ++++++++++++++++++ .../posts/oh-no-git-send-email/received.png | Bin 0 -> 33997 bytes templates/index.html | 4 +- templates/macros/image.html | 32 +++++ templates/page.html | 2 +- templates/shortcodes/image.html | 29 ++-- 6 files changed, 175 insertions(+), 23 deletions(-) create mode 100644 content/posts/oh-no-git-send-email/index.md create mode 100644 content/posts/oh-no-git-send-email/received.png create mode 100644 templates/macros/image.html diff --git a/content/posts/oh-no-git-send-email/index.md b/content/posts/oh-no-git-send-email/index.md new file mode 100644 index 0000000..06bbbdd --- /dev/null +++ b/content/posts/oh-no-git-send-email/index.md @@ -0,0 +1,131 @@ ++++ +date = "2022-04-22" +draft = false +path = "/blog/oh-no-git-send-email" +tags = ["git", "tools"] +title = "Oh no, `git send-email`" ++++ + +Say you have to contribute to some boomer project that doesn't believe in +GitHub or GitLab or Gitea or <...> which would allow for just pushing some +changes and filing a pull request. Instead, they want an *email*. Gross. + +For those who are unfamiliar with the email-patch infrastructure, git is +*extremely* picky about emails being the exact format it likes and not getting +modified at all by the client. This means that in practice, you need to send +your patch emails using `git send-email` as your email client. + +The patch-emailing features of git are some of its most infamous for poor +usability, which is saying something, because git as a whole is known for being +hard to use. + +Theoretically, (by someone who made their own git +source hosting service that strangely uses emails to submit patches) will tell +you how to set it up. Well, except if `git send-email` has other ideas: it +would not send through my email provider for reasons that must have been a bug: +I seem to recall it was something to do with either a TLS or SMTP +implementation being broken. + +I ended up needing to use a separate *Mail Transfer Agent* (SMTP-speak for +"SMTP client") and plumb it into git. For this, I used `msmtp`. + +{% codesample(desc="`~/.msmtprc`") %} +# Used to identify which account you are using in the msmtp command line +account myaccountname + +# Tunneled-TLS email configuration. Probably correct for most modern servers, +# but check your email provider documentation. This is correct for migadu. + +host smtp.migadu.com +port 465 +tls on +tls_starttls off +auth on +user user@example.com + +# From address on the envelope. Probably your email, but not necessarily +# (note that this is distinct from the "from" address in the message body that +# will be shown to recipients. it needs to match the address subscribed to the +# mailing list) +from listsubscriber@example.com + +# Use kwallet-query to get the password because kwallet does not support the +# freedesktop secrets protocol +# "mail" is the folder on the left hand side of the "Wallet Manager" +# and user@example.com is the name of the item +passwordeval kwallet-query -r user@example.com kdewallet -f mail +{% end %} + +Then configure git (I keep this in `~/.gitconfig` as I don't really want to +check it in for spam reasons, whereas most of my git config is checked in and +stored at `~/.config/git/config`): + +{% codesample(desc="`~/.gitconfig`") %} +[sendemail] + sendmailcmd = /usr/bin/msmtp + smtpserveroption = -a + smtpserveroption = myaccountname + confirm = always +{% end %} + +Finally, you can send an email: + +``` +/tmp/nya » git init +Initialized empty Git repository in /tmp/nya/.git/ + +/tmp/nya - [main] » echo nyaa > README.md +/tmp/nya - [main●] » git add -A +/tmp/nya - [main●] » git commit -m 'initial commit' +[main (root-commit) 5e2e44d] initial commit + 1 file changed, 1 insertion(+) + create mode 100644 README.md + +/tmp/nya - [main] » echo nyaaaaaaaaaaaaaaaaaaaaa >> README.md + +/tmp/nya - [main●] » git commit -am 'more nya' +[main 3df1f2d] more nya + 1 file changed, 1 insertion(+) + +# NOTE: you probably want to use --compose to write a message to include with +# your patch. You can also use --dry-run to do a dry run. +/tmp/nya - [main] » git send-email --to='somepoorsoul@example.com' --from=message-from@example.com HEAD^ + +/tmp/jade/jKCO7nnORw/0001-more-nya.patch +(mbox) Adding cc: Jade Lovelace from line 'From: Jade Lovelace ' + +From: message-from@example.com +To: somepoorsoul@example.com +Cc: Jade Lovelace +Subject: [PATCH] more nya +Date: Fri, 22 Apr 2022 20:45:30 -0700 +Message-Id: <20220423034529.3057172-1-message-from@example.com> +X-Mailer: git-send-email 2.35.2 +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit + +Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): y +OK. Log says: +Sendmail: /usr/bin/msmtp -a message-from@example.com -i somepoorsoul@example.com commitauthor@example.com +From: message-from@example.com +To: somepoorsoul@example.com +Cc: Jade Lovelace +Subject: [PATCH] more nya +Date: Fri, 22 Apr 2022 20:45:30 -0700 +Message-Id: <20220423034529.3057172-1-message-from@example.com> +X-Mailer: git-send-email 2.35.2 +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit + +Result: OK +``` + +And, yes, it was received: + +{% image(name="received.png", colocated=true) %} +Screenshot of the email sent by git in an email client. + +It shows the patch as you'd see with the output of format-patch. +{% end %} + +See? That was ~~sooooo easy~~ very hard for no reason. diff --git a/content/posts/oh-no-git-send-email/received.png b/content/posts/oh-no-git-send-email/received.png new file mode 100644 index 0000000000000000000000000000000000000000..b752a6e7dd9edc06e171ea57d471f12478274073 GIT binary patch literal 33997 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 literal 0 HcmV?d00001 diff --git a/templates/index.html b/templates/index.html index 32069c8..bd1cbe8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -7,7 +7,7 @@ {% endif %}
-

{{ page.title }}

+

{{ page.title | markdown(inline=true) | safe }}

{{ __tera_context | escape | safe }} {% endif %} -{% endblock content %} \ No newline at end of file +{% endblock content %} diff --git a/templates/macros/image.html b/templates/macros/image.html new file mode 100644 index 0000000..1a30ceb --- /dev/null +++ b/templates/macros/image.html @@ -0,0 +1,32 @@ +{%- import "macros/colocated_asset.html" as colocated_asset -%} + +{%- macro image(name, alt, colocated, height) -%} +{%- set name_sanitized = name | replace(from=".", to="-") | replace(from="/", to="-") -%} +{%- set image_id = "image" ~ name_sanitized -%} + +{%- if colocated == true -%} +{%- set image_path = colocated_asset::colocated_asset(path=name) -%} +{%- set image_url = name -%} +{%- else -%} +{%- set image_path = "/static/images/" ~ name -%} +{%- set image_url = get_url(path=image_path) -%} +{%- endif -%} + +{%- set image = resize_image(path=image_path, width=800, height=height, op="fit") -%} +
+ + {{ alt }} + + {% if label %} + + {{ label }} + + {% endif %} +
+{%- endmacro image -%} diff --git a/templates/page.html b/templates/page.html index 07af089..4296bf1 100644 --- a/templates/page.html +++ b/templates/page.html @@ -18,7 +18,7 @@ {% block content %}