Repository navigation
Add .mailmap Validation with mailmap-checker #148329
Description
Activity
- addedtype-featureA feature request or enhancementA feature request or enhancement
on Apr 10, 2026 This shows the current situation.
Details
>> mailmap-checker check Found 187 unmapped identities in 166 groups: Canonical: A.Ibrahim <abdulrasheedibrahim47@gmail.com> - Abdul <abdulrasheedibrahim47@gmail.com> Canonical: AJ Jordan <alex@strugee.net> - Alex Jordan <alex@strugee.net> Canonical: AN Long <aisk@users.noreply.github.com> - An Long <aisk@users.noreply.github.com> Canonical: Alexander Belopolsky <abalkin@users.noreply.github.com> - Lev Abalkin <abalkin@users.noreply.github.com> Canonical: Alexey Izbyshev <izbyshev@ispras.ru> - Alexey Izbyshev <izbyshev@users.noreply.github.com> - izbyshev <izbyshev@users.noreply.github.com> Canonical: Allen <64019758+aboddie@users.noreply.github.com> - aboddie <64019758+aboddie@users.noreply.github.com> Canonical: Alyssa Coghlan <ncoghlan@gmail.com> - Nick Coghlan <ncoghlan@gmail.com> Canonical: Ananthakrishnan <ananthakrishnan15.2001@gmail.com> - ananthan-123 <ananthakrishnan15.2001@gmail.com> Canonical: Andre Delfino <adelfino@gmail.com> - Andrés Delfino <adelfino@gmail.com> Canonical: Andrej <azhilenkov@gmail.com> - Andrej730 <azhilenkov@gmail.com> Canonical: Andrew Kuchling <amk@amk.ca> - Andrew M. Kuchling <amk@amk.ca> Canonical: Andrew Zipperer <47086307+zipperer@users.noreply.github.com> - zipperer <47086307+zipperer@users.noreply.github.com> Canonical: Batuhan Taskaya <batuhanosmantaskaya@gmail.com> - Batuhan Taşkaya <batuhanosmantaskaya@gmail.com> Canonical: Ben Harper <btharper1221@gmail.com> - btharper <btharper1221@gmail.com> Canonical: Benedikt Johannes <benedikt.johannes.hofer@gmail.com> - benediktjohannes <benedikt.johannes.hofer@gmail.com> Canonical: Benjamin Fogle <benfogle@gmail.com> - benfogle <benfogle@gmail.com> Canonical: Benjamin Szőke <egyszeregy@freemail.hu> - Livius <egyszeregy@freemail.hu> Canonical: Beomsoo Kim <bluewhale8202@gmail.com> - Derek B. Kim <bluewhale8202@gmail.com> Canonical: Boris Verhovsky <boris.verk@gmail.com> - Boris Verkhovskiy <boris.verk@gmail.com> - Борис Верховский <boris.verk@gmail.com> Canonical: Brad Solomon <brad.solomon.1124@gmail.com> - Brad <brad.solomon.1124@gmail.com> Canonical: Brandt Bucher <brandtbucher@gmail.com> - Brandt Bucher <brandtbucher@microsoft.com> Canonical: Brian Curtin <brian.curtin@gmail.com> - briancurtin <brian.curtin@gmail.com> Canonical: Brian Curtin <brian@python.org> - brian.curtin <brian@python.org> Canonical: Brian Quinlan <brian@sweetapp.com> - bquinlan <brian@sweetapp.com> Canonical: Brij Kapadia <97006829+bkap123@users.noreply.github.com> - bkap123 <97006829+bkap123@users.noreply.github.com> Canonical: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM> - CAM Gerlach <CAM.Gerlach@Gerlach.CAM> Canonical: CF Bolz-Tereick <cfbolz@gmx.de> - Carl Friedrich Bolz-Tereick <cfbolz@gmx.de> Canonical: Charles-Francois Natali <cf.natali@gmail.com> - Charles-François Natali <cf.natali@gmail.com> Canonical: Cheryl Sabella <cheryl.sabella@gmail.com> - csabella <cheryl.sabella@gmail.com> Canonical: Chih-Hsuan Yen <yan12125@gmail.com> - Yen Chi Hsuan <yan12125@gmail.com> Canonical: Christian Clauss <cclauss@me.com> - cclauss <cclauss@me.com> Canonical: Christian Heimes <christian@cheimes.de> - Christian Heimes <christian@python.org> Canonical: Christian Ullrich <chris@chrullrich.net> - chrullrich <chris@chrullrich.net> Canonical: Colin Watson <cjwatson@debian.org> - Colin Watson <cjwatson@ubuntu.com> Canonical: Daniel Weiss <134341009+justdan6@users.noreply.github.com> - justdan6 <134341009+justdan6@users.noreply.github.com> Canonical: David Benjamin <davidben@davidben.net> - David Benjamin <davidben@google.com> Canonical: Dennis Sweeney <36520290+sweeneyde@users.noreply.github.com> - sweeneyde <36520290+sweeneyde@users.noreply.github.com> Canonical: Devin Jeanpierre <jeanpierreda@gmail.com> - Devin Jeanpierre <jeanpierreda@google.com> Canonical: Dino Viehland <dinoviehland@fb.com> - Dino Viehland <dinoviehland@gmail.com> - Dino Viehland <dinoviehland@meta.com> Canonical: Dominic H <dom@dominic.sk> - Dominic H. <dom@dominic.sk> Canonical: Dong-hee Na <donghee.na@python.org> - Donghee Na <donghee.na@python.org> Canonical: E Kawashima <e-kwsm@users.noreply.github.com> - Eisuke Kawashima <e-kwsm@users.noreply.github.com> Canonical: E. M. Bray <erik.m.bray@gmail.com> - Erik Bray <erik.m.bray@gmail.com> Canonical: Eddie Elizondo <eelizondo@fb.com> - Eddie Elizondo <eelizondo@meta.com> Canonical: Edward Xu <xuxiangad@foxmail.com> - Edward Xu <xuxiangad@gmail.com> Canonical: Eric Smith <eric@trueblade.com> - Eric V. Smith <eric@trueblade.com> Canonical: Eric V. Smith <ericvsmith@users.noreply.github.com> - ericvsmith <ericvsmith@users.noreply.github.com> Canonical: Erik Janssens <erik.janssens@conceptive.be> - erikjanss <erik.janssens@conceptive.be> Canonical: Erlend E. Aasland <erlend.aasland@innova.no> - Erlend E. Aasland <erlend.aasland@protonmail.com> - Erlend Egeberg Aasland <erlend.aasland@innova.no> - Erlend Egeberg Aasland <erlend.aasland@protonmail.com> Canonical: Ethan Furman <ethan@stoneleaf.us> - ethanfurman <ethan@stoneleaf.us> Canonical: FC Stegerman <flx@obfusk.net> - Felix C. Stegerman <flx@obfusk.net> Canonical: Furkan Onder <furkanonder@protonmail.com> - Furkan Önder <furkanonder@protonmail.com> Canonical: Furkan Onder <furkantahaonder@gmail.com> - Furkan Önder <furkantahaonder@gmail.com> Canonical: George Zhang <geetransit@gmail.com> - GeeTransit <geetransit@gmail.com> Canonical: Gerhard Haering <gh@ghaering.de> - Gerhard Häring <gh@ghaering.de> Canonical: Giampaolo Rodola <g.rodola@gmail.com> - Giampaolo Rodola' <g.rodola@gmail.com> - Giampaolo Rodolà <g.rodola@gmail.com> Canonical: Grzegorz Grzywacz <grzgrzgrz3@gmail.com> - grzgrzgrz3 <grzgrzgrz3@gmail.com> Canonical: Guo Ci <zguoci@gmail.com> - guoci <zguoci@gmail.com> Canonical: Hai Zhu <35182391+cocolato@users.noreply.github.com> - LloydZ <35182391+cocolato@users.noreply.github.com> Canonical: INADA Naoki <methane@users.noreply.github.com> - Inada Naoki <methane@users.noreply.github.com> Canonical: INADA Naoki <songofacandy@gmail.com> - Inada Naoki <songofacandy@gmail.com> Canonical: Ikko Ashimine <eltociear@gmail.com> - Ikko Eltociear Ashimine <eltociear@gmail.com> Canonical: Itamar Oren <itamarost@gmail.com> - Itamar Ostricher <itamarost@gmail.com> Canonical: JMcB <joel.mcbride1@live.com> - jmcb <joel.mcbride1@live.com> Canonical: Jack DeVries <58614260+jdevries3133@users.noreply.github.com> - jdevries3133 <58614260+jdevries3133@users.noreply.github.com> Canonical: Jack Hindmarch <1750152+jackh-ncl@users.noreply.github.com> - jackh-ncl <1750152+jackh-ncl@users.noreply.github.com> Canonical: James Gerity <snoopjedi@gmail.com> - James <snoopjedi@gmail.com> Canonical: Jason Zhang <yurenzhang2017@gmail.com> - JasonYZ <yurenzhang2017@gmail.com> Canonical: Jay Aljelo Ting <65202977+jayasting98@users.noreply.github.com> - Jay Ting <65202977+jayasting98@users.noreply.github.com> Canonical: Jaysinh Shukla <jaysinhp@gmail.com> - UltimateCoder <jaysinhp@gmail.com> Canonical: Jeffrey Kintscher <49998481+websurfer5@users.noreply.github.com> - websurfer5 <49998481+websurfer5@users.noreply.github.com> Canonical: Jeroen Demeyer <J.Demeyer@UGent.be> - jdemeyer <J.Demeyer@UGent.be> Canonical: Jesus Cea <jcea@jcea.es> - Jesús Cea <jcea@jcea.es> - jcea <jcea@jcea.es> Canonical: Jules Lasne <jules.lasne@gmail.com> - Jules Lasne (jlasne) <jules.lasne@gmail.com> Canonical: Julian Waters <32636402+TheShermanTanker@users.noreply.github.com> - TheShermanTanker <32636402+TheShermanTanker@users.noreply.github.com> Canonical: JunWei Song <sungboss2004@gmail.com> - Nick Sung <sungboss2004@gmail.com> - nick sung <sungboss2004@gmail.com> Canonical: Karthikeyan Singaravelan <tir.karthi@gmail.com> - Xtreak <tir.karthi@gmail.com> Canonical: Kazantcev Andrey <45011689+heckad@users.noreply.github.com> - Andrey <45011689+heckad@users.noreply.github.com> Canonical: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> - Fidget-Spinner <28750310+Fidget-Spinner@users.noreply.github.com> - kj <28750310+Fidget-Spinner@users.noreply.github.com> Canonical: Kevin Follstad <kfollstad@gmail.com> - kfollstad <kfollstad@gmail.com> Canonical: Kira <coldcaption@gmail.com> - abstractedfox <coldcaption@gmail.com> Canonical: Kirill Podoprigora <80244920+Eclips4@users.noreply.github.com> - Eclips4 <80244920+Eclips4@users.noreply.github.com> - Kirill <80244920+Eclips4@users.noreply.github.com> Canonical: Kristjan Valur Jonsson <sweskman@gmail.com> - Kristján Valur Jónsson <sweskman@gmail.com> - krisvale <sweskman@gmail.com> Canonical: Kyle Stanley <44193521+aeros167@users.noreply.github.com> - Aeros <44193521+aeros167@users.noreply.github.com> Canonical: Larry Hastings <larry@hastings.org> - larry <larry@hastings.org> - larryhastings <larry@hastings.org> Canonical: Licht Takeuchi <licht-t@outlook.jp> - Rito Takeuchi <licht-t@outlook.jp> Canonical: Louie Lu <git@louie.lu> - mlouielu <git@louie.lu> Canonical: Loïc Simon <loic.simon@espci.org> - Loïc Simon <loic.simon@napta.io> Canonical: M Bussonnier <bussonniermatthias@gmail.com> - Matthias Bussonnier <bussonniermatthias@gmail.com> Canonical: Ma Lin <animalize@users.noreply.github.com> - animalize <animalize@users.noreply.github.com> Canonical: Marc-Andre Lemburg <mal@egenix.com> - Marc-André Lemburg <mal@egenix.com> Canonical: Marco Aurélio A. Barbosa <aureliobarbosa@gmail.com> - Marco Barbosa <aureliobarbosa@gmail.com> Canonical: Mariatta Wijaya <Mariatta@users.noreply.github.com> - Mariatta <Mariatta@users.noreply.github.com> Canonical: Martin DeMello <martindemello@fb.com> - Martin DeMello <martindemello@gmail.com> Canonical: Martin v. Loewis <martin@v.loewis.de> - Martin v. Löwis <martin@v.loewis.de> Canonical: Mathieu Dupuy <deronnax@gmail.com> - Mathieu Dupuy <deronnax@users.noreply.github.com> Canonical: Mathieu Dupuy <mathieu.dupuy@critizr.com> - Mathieu Dupuy <mathieu.dupuy@doctolib.com> Canonical: Matthew Hughes <34972397+matthewhughes934@users.noreply.github.com> - matthewhughes934 <34972397+matthewhughes934@users.noreply.github.com> Canonical: Matthias Klose <doko@ubuntu.com> - doko@ubuntu.com <doko@ubuntu.com> Canonical: Maurycy Pawłowski-Wieroński <5383+maurycy@users.noreply.github.com> - maurycy <5383+maurycy@users.noreply.github.com> Canonical: Michael Osipov <michael.osipov@innomotics.com> - Michael Osipov <michael.osipov@siemens.com> Canonical: Mikhail Efimov <efimov.mikhail@gmail.com> - efimov-mikhail <efimov.mikhail@gmail.com> Canonical: Milan Oberkirch <milan.oberkirch@geops.com> - Milan Oberkirch <milan.oberkirch@geops.de> Canonical: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> - Miss Skeleton (bot) <31488909+miss-islington@users.noreply.github.com> Canonical: Nadeshiko Manju <me@manjusaka.me> - Manjusaka <me@manjusaka.me> Canonical: Naglis <naglis@users.noreply.github.com> - naglis <naglis@users.noreply.github.com> Canonical: Naglis Jonaitis <827324+naglis@users.noreply.github.com> - naglis <827324+naglis@users.noreply.github.com> Canonical: Nikita Sobolev <mail@sobolevn.me> - sobolevn <mail@sobolevn.me> Canonical: Oren Milman <orenmn@gmail.com> - orenmn <orenmn@gmail.com> Canonical: Oz N Tiram <oz.tiram@gmail.com> - Oz N Tiram <oz.tiram@noris.de> Canonical: Pablo Galindo <Pablogsal@gmail.com> - Dargor <Pablogsal@gmail.com> - Pablo Galindo <pablogsal@gmail.com> - Pablo Galindo Salgado <Pablogsal@gmail.com> Canonical: Paul m. p. P <mail.peny@free.fr> - Paul m. p. Peny <mail.peny@free.fr> Canonical: Paulo Henrique Silva <ph.silva@carta.com> - Paulo Henrique Silva <ph.silva@gmail.com> Canonical: Peter Bierma <zintensitydev@gmail.com> - Peter <zintensitydev@gmail.com> Canonical: Philipp A <flying-sheep@web.de> - Philipp A. <flying-sheep@web.de> Canonical: Quentin Agren <quentin.agren@gmail.com> - Quentin <quentin.agren@sciencespo.fr> - Quentin Agren <quentin.agren@sciencespo.fr> Canonical: R Chintan Meher <meherrihaan@gmail.com> - Rihaan Meher <meherrihaan@gmail.com> - sharktide <meherrihaan@gmail.com> Canonical: R David Murray <rdmurray@bitdance.com> - R. David Murray <rdmurray@bitdance.com> Canonical: RUANG (James Roy) <longjinyii@outlook.com> - RUANG (Roy James) <longjinyii@outlook.com> Canonical: Radislav Chugunov <52372310+chgnrdv@users.noreply.github.com> - chgnrdv <52372310+chgnrdv@users.noreply.github.com> Canonical: Rafael Weingartner-Ortner <38643099+RafaelWO@users.noreply.github.com> - RafaelWO <38643099+RafaelWO@users.noreply.github.com> Canonical: Rémi Lapeyre <remi.lapeyre@henki.fr> - Rémi Lapeyre <remi.lapeyre@lenstra.fr> Canonical: Samodya Abey <379594+sransara@users.noreply.github.com> - Samodya Abeysiriwardane <379594+sransara@users.noreply.github.com> Canonical: Savannah Bailey <savannahostrowski@gmail.com> - Savannah Ostrowski <savannahostrowski@gmail.com> Canonical: Sean Reifscheider <jafo@tummy.com> - Sean Reifschneider <jafo@tummy.com> Canonical: Semyon Moroz <donbarbos@proton.me> - donBarbos <donbarbos@proton.me> Canonical: Senthil Kumaran <orsenthil@gmail.com> - orsenthil@gmail.com <orsenthil@gmail.com> Canonical: Stan U. <89152624+StanFromIreland@users.noreply.github.com> - Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Canonical: Stanislav Terliakov <50529348+sterliakov@users.noreply.github.com> - sterliakov <50529348+sterliakov@users.noreply.github.com> Canonical: Stanley <46876382+slateny@users.noreply.github.com> - slateny <46876382+slateny@users.noreply.github.com> Canonical: Stefan Behnel <stefan_ml@behnel.de> - scoder <stefan_ml@behnel.de> Canonical: Steve (Gadget) Barnes <gadgetsteve@hotmail.com> - Steve (Gadget) Barnes <gadgetsteve@live.co.uk> Canonical: Steve Dower <steve.dower@microsoft.com> - Steve Dower <steve.dower@python.org> Canonical: Steven D'Aprano <steve+python@pearwood.info> - stevendaprano <steve+python@pearwood.info> Canonical: Steven M. Vascellaro <S.Vascellaro@gmail.com> - Stevoisiak <S.Vascellaro@gmail.com> Canonical: Stéphane Bidoul <stephane.bidoul@acsone.eu> - Stéphane Bidoul <stephane.bidoul@gmail.com> Canonical: Sviatoslav Sydorenko <wk.cvs.github@sydorenko.org.ua> - Sviatoslav Sydorenko (Святослав Сидоренко) <wk.cvs.github@sydorenko.org.ua> Canonical: Sviatoslav Sydorenko <wk@sydorenko.org.ua> - Sviatoslav Sydorenko (Святослав Сидоренко) <wk@sydorenko.org.ua> Canonical: T <tnie@tuta.io> - Tiger <tnie@tuta.io> Canonical: T. Wouters <thomas@python.org> - Thomas Wouters <thomas@python.org> Canonical: Terry Jan Reedy <tjreedy@udel.edu> - Terry Reedy <tjreedy@udel.edu> - terryjreedy <tjreedy@udel.edu> Canonical: Tian Gao <gaogaotiantian@hotmail.com> - gaogaotiantian <gaogaotiantian@hotmail.com> Canonical: Tomas R <tomas.roun8@gmail.com> - Tomas R. <tomas.roun8@gmail.com> Canonical: Valentin Haenel <esc@users.noreply.github.com> - esc <esc@users.noreply.github.com> Canonical: Victor Stinner <victor.stinner@gmail.com> - Victor Stinner <victor.stinner@haypocalc.com> Canonical: Victor Stinner <vstinner@python.org> - Victor Stinner <vstinner@redhat.com> - Victor Stinner <vstinner@wyplay.com> Canonical: Victorien <65306057+Viicos@users.noreply.github.com> - Viicos <65306057+Viicos@users.noreply.github.com> Canonical: W. H. Wang <mattwang44@gmail.com> - Wei-Hsiang (Matt) Wang <mattwang44@gmail.com> Canonical: Walter Doerwald <walter@livinglogic.de> - Walter Dörwald <walter@livinglogic.de> Canonical: Wansoo Kim <rladhkstn8@gmail.com> - marload <rladhkstn8@gmail.com> Canonical: Weilin Du <108666168+LamentXU123@users.noreply.github.com> - LamentXU <108666168+LamentXU123@users.noreply.github.com> Canonical: Weipeng Hong <hongweichen8888@sina.com> - HongWeipeng <hongweichen8888@sina.com> Canonical: Willow Chargin <wchargin@gmail.com> - William Chargin <wchargin@gmail.com> Canonical: Wim Jeantine-Glenn <hey@wimglenn.com> - wim glenn <hey@wimglenn.com> Canonical: Wim Jeantine-Glenn <jump@wimglenn.com> - wim glenn <jump@wimglenn.com> Canonical: Wulian <1055917385@qq.com> - Wulian233 <1055917385@qq.com> Canonical: Xianpeng Shen <xianpeng.shen@gmail.com> - shenxianpeng <xianpeng.shen@gmail.com> Canonical: Xuehai Pan <XuehaiPan@outlook.com> - Xuehai Pan <XuehaiPan@pku.edu.cn> Canonical: Yao Zuo <laike9m@users.noreply.github.com> - laike9m <laike9m@users.noreply.github.com> Canonical: Yilei Yang <hi@mangoumbrella.com> - Yilei <hi@mangoumbrella.com> Canonical: Yuki K <drsuaimqjgar@gmail.com> - F3eQnxN3RriK <drsuaimqjgar@gmail.com> - Yuki Kobayashi <drsuaimqjgar@gmail.com> - yuki <drsuaimqjgar@gmail.com> Canonical: Yury Selivanov <yselivanov@gmail.com> - Yury Selivanov <yselivanov@sprymix.com> Canonical: cvs2svn <tools@python.org> - unknown <tools@python.org> Canonical: opavliuk <40970635+opavlyuk@users.noreply.github.com> - opavlyuk <40970635+opavlyuk@users.noreply.github.com> Canonical: t k <tahia.khan@gmail.com> - t k <tahia.khan@utoronto.ca> - tahia <tahia.khan@gmail.com> Canonical: Éric Araujo <merwok@netwok.org> - Éric <merwok@netwok.org>Use the existing mailmap-checker tool (https://github.com/cansarigol/mailmap-checker) which:
This tool is a week old, (and I see you're the author?) IMO we'd have to audit it before adding it to pre-commit, since it is then automatically installed in many places.
Reacted by 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко)- addedpendingThe issue will be closed if no feedback is providedThe issue will be closed if no feedback is provided
on Apr 10, 2026 Yes, I'm the author. The tool originated from solving this exact problem at my company - tracking down scattered user identities across our Git history. After seeing similar gaps in large Python projects (including CPython's new .mailmap), I decided to make it public.
I completely understand the need for an audit before adopting external dependencies.
Also, how does the tool pick what is 'canonical'? It got my name wrong, for example.
I see there is also an older, and a little more popular pre-commit hook that seems to do the same thing, https://github.com/jumanjihouse/pre-commit-hooks?tab=readme-ov-file#check-mailmap?
Also, how does the tool pick what is 'canonical'? It got my name wrong, for example.
When no .mailmap entry exists, the tool picks the canonical using a heuristic: it prefers names that start with a letter and contain a space. Among equally valid names, it falls back to alphabetical order. This is a known limitation.
I'm open to improving the heuristic. One idea is to prefer the name with the most commits
I don't think "scattered user identities" is a problem we need to solve. Also, changing peoples' names without their consent would be quite rude.
Reacted by Hugo van Kemenade, Stan Ulbrych, Zachary Ware and 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко)I'm also -1 on this.
I see there is also an older, and a little more popular pre-commit hook that seems to do the same thing, https://github.com/jumanjihouse/pre-commit-hooks?tab=readme-ov-file#check-mailmap?
My main concern was auto-fix that automatically generates and inserts the missing entries. mailmap-checker supports committer identities and cross-domain grouping via email local-part matching. But logic is same as you said
The
.mailmapfile was created in 2023 and then only modified once in 2025. I don't think that we need a tool validating this file automatically, since it's almost never modified. We can use such tool manually when a future change will happen.Reacted by Stan Ulbrych, Hugo van Kemenade, 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) and Maurycy Pawłowski-WierońskiTo clarify — the tool doesn't change anyone's name. It detects gaps in the existing .mailmap file that CPython already maintains since 2023. I understand that a pre-commit hook may be overkill for a file that's rarely modified. The tool can also be used as a one-off CLI command (mailmap-checker check) — no hook needed.
Thanks for the suggestion @cansarigol, but unfortunately I'm going to close this issue. It is clear there is no support for this from the core team (if someone does, please re-open!).
It could be used as a one-off command, but that brings us back to Petr's point:
Also, changing peoples' names without their consent would be quite rude.
Reacted by Can Sarıgöl
Feature or enhancement
Proposal:
Proposal: Add .mailmap Validation with mailmap-checker
Summary
Add automated
.mailmapvalidation to CPython'spatchcheck.pyand pre-commit configuration using themailmap-checkertool, ensuring proper formatting, completeness, and preventing duplicate entries.Background
The
.mailmapfile was introduced in PR #103696 to map contributor name/email changes in git history. As noted by @zware in that discussion:Currently, there's no automated validation, which can lead to:
Proposed Solution
Use the existing
mailmap-checkertool (https://github.com/cansarigol/mailmap-checker) which:.mailmapsyntax and completenessImplementation
1. Add to
Tools/scripts/patchcheck.py:2. Add to
.pre-commit-config.yaml:3. Update documentation:
Add to
Doc/developers/patchcheck.rstor contributing guide:Related
.mailmapintroductionHas this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response