From 975a3ae9b46c3808a89f08e20ece82d9a8bb57c0 Mon Sep 17 00:00:00 2001 From: Cato <41178744+catomean@users.noreply.github.com> Date: Sat, 5 Sep 2026 17:50:44 +0200 Subject: [PATCH] chore(identity): .mailmap resolves every past commit to Cato MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This repo had no .mailmap, so git log and GitHub showed the raw author of every commit — and seven variants had accumulated: G, g-but, Mao Nakamoto, three noreply addresses, a personal gmail, and git's uninitialised default "Your Name ". A mailmap fixes the displayed author of every existing commit without rewriting a hash, which is the only proportionate option for history that is already merged and pushed. Two kinds of rule are needed. Most variants are matched by commit email alone. But commits authored as "G" carry the CANONICAL email, so an email-only rule cannot reach them — mailmap matches on the commit's email, and theirs is already the target. Those need a name+email rule on both sides. Verified rather than assumed, over the last 400 commits: before: G, g-but, Mao Nakamoto, Your Name, Devin AI, dependabot after: 288 Cato · 108 Devin AI · 4 dependabot Devin AI and dependabot are genuinely different authors and are left alone. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01G2LBioUzJP4oBL9LeH9qAe --- .mailmap | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .mailmap diff --git a/.mailmap b/.mailmap new file mode 100644 index 00000000..b2abadb6 --- /dev/null +++ b/.mailmap @@ -0,0 +1,34 @@ +# One identity: Cato. +# +# Rewrites the DISPLAYED author of existing commits (git log, GitHub) without +# rewriting a single hash. Six name variants and seven addresses accumulated +# across these repos before the git config was corrected. +# +# Two kinds of rule, and the difference matters: +# `Cato ` — matches by commit email alone. +# `Cato Name ` — needed when the commit already +# carries the canonical email, so an +# email-only rule cannot match it. + +# Retired noreply addresses (both the numbered and unnumbered forms) +Cato <41178744+catomean@users.noreply.github.com> <41178744+maonakamoto@users.noreply.github.com> +Cato <41178744+catomean@users.noreply.github.com> +Cato <41178744+catomean@users.noreply.github.com> <41178744+g-but@users.noreply.github.com> + +# Personal and machine-local addresses that leaked into commit metadata +Cato <41178744+catomean@users.noreply.github.com> +Cato <41178744+catomean@users.noreply.github.com> + +# git's uninitialised default, used before the config was set +Cato <41178744+catomean@users.noreply.github.com> + +# Names carrying the CANONICAL email — email-only rules cannot reach these +Cato <41178744+catomean@users.noreply.github.com> G <41178744+catomean@users.noreply.github.com> +Cato <41178744+catomean@users.noreply.github.com> Mao Nakamoto <41178744+catomean@users.noreply.github.com> + +# A handful of commits carry a human name on the assistant's address — the +# author was the human, so they resolve to Cato. The name+email rule wins over +# the email-only Claude rule below, which still covers genuine agent commits. +Cato <41178744+catomean@users.noreply.github.com> Mao Nakamoto + +Claude (AI assistant)