All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles
@ 2026-06-24 12:29 Daniel P. Berrangé
  2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Daniel P. Berrangé @ 2026-06-24 12:29 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alex Bennée, Philippe Mathieu-Daudé, Fabiano Rosas,
	Daniel P. Berrangé

When triaging GitLab issues, whether regular bugs or security
disclosures, we need to be able to assign suitable accounts.

We can only assign Git Lab handles for accounts that are members
of the QEMU group, or QEMU repository with the "Reporter" role
or higher.

Currently one needs to run 'get_maintainer.pl -f <file>' to get
the maintainer / reviewer names & emails, and then look in the
GitLab members page to see if there is a match.

This simplifies that by including the GitLab handle alongside
the email addresses:

The GitLab account handle -> real name mapping is stored in
separate files .gitlab-map-auto & .gitlab-map-manual to avoid
redundancy in the MAINTAINERS file. The former file is
auto-generated and catches 99% of the mappings, the latter is
for manual fixups.

With this series applied as is, we get the following stats

$ ./scripts/gitlab-map-check
Missing GitLab handle: Akihiko Odaki
Missing GitLab handle: Albert Esteve
Missing GitLab handle: Alberto Garcia
Missing GitLab handle: Alejandro Jimenez
Missing GitLab handle: Aleksandar Rikalo
Missing GitLab handle: Alessandro Di Federico
Missing GitLab handle: Alexandre Iooss
Missing GitLab handle: Alexandre Ratchov
Missing GitLab handle: Alexey Kardashevskiy
Missing GitLab handle: Amit Shah
Missing GitLab handle: Andrew Jeffery
Missing GitLab handle: Anthony PERARD
Missing GitLab handle: Anton Johansson
Missing GitLab handle: Antony Pavlov
Missing GitLab handle: Ari Sundholm
Missing GitLab handle: Artyom Tarasenko
Missing GitLab handle: Aurelien Jarno
Missing GitLab handle: BALATON Zoltan
Missing GitLab handle: Ben Chaney
Missing GitLab handle: Bernhard Beschow
Missing GitLab handle: Bibo Mao
Missing GitLab handle: Brad Smith
Missing GitLab handle: Canokeys.org
Missing GitLab handle: Chao Liu
Missing GitLab handle: Chinmay Rath
Missing GitLab handle: Christoph Muellner
Missing GitLab handle: Clément Chigot
Missing GitLab handle: Clément Mathieu--Drif
Missing GitLab handle: Collin Walling
Missing GitLab handle: Corey Minyard
Missing GitLab handle: Darren Kenny
Missing GitLab handle: Denis V. Lunev
Missing GitLab handle: Dmitry Fleytman
Missing GitLab handle: Dmitry Osipenko
Missing GitLab handle: Dorjoy Chowdhury
Missing GitLab handle: Doru Blânzeanu
Missing GitLab handle: Edgar E. Iglesias
Missing GitLab handle: Elena Ufimtseva
Missing GitLab handle: Eric Auger
Missing GitLab handle: Eric Farman
Missing GitLab handle: Eugenio Pérez
Missing GitLab handle: Farhan Ali
Missing GitLab handle: Felipe Balbi
Missing GitLab handle: Francisco Iglesias
Missing GitLab handle: Frederic Konrad
Missing GitLab handle: Gaurav Sharma
Missing GitLab handle: Gautam Gala
Missing GitLab handle: Gautam Menghani
Missing GitLab handle: Giuseppe Lettieri
Missing GitLab handle: Glenn Miles
Missing GitLab handle: Gonglei
Missing GitLab handle: Haixu Cui
Missing GitLab handle: Halil Pasic
Missing GitLab handle: Hao Wu
Missing GitLab handle: Hari Bathini
Missing GitLab handle: Hendrik Brueckner
Missing GitLab handle: Hervé Poussineau
Missing GitLab handle: Hongren (Zenithal) Zheng
Missing GitLab handle: Huacai Chen
Missing GitLab handle: Hyman Huang
Missing GitLab handle: Ilya Dryomov
Missing GitLab handle: Ilya Leoshkevich
Missing GitLab handle: Ilya Maximets
Missing GitLab handle: Jagannathan Raman
Missing GitLab handle: Jamin Lin
Missing GitLab handle: Jan Kiszka
Missing GitLab handle: Jared Rossi
Missing GitLab handle: Jason Herne
Missing GitLab handle: Jean-Christophe Dubois
Missing GitLab handle: Jesper Devantier
Missing GitLab handle: Jeuk Kim
Missing GitLab handle: Jiaxun Yang
Missing GitLab handle: Jiri Pirko
Missing GitLab handle: Jiri Slaby
Missing GitLab handle: Joe Komlodi
Missing GitLab handle: Joel Stanley
Missing GitLab handle: John Levon
Missing GitLab handle: Jonathan Cameron
Missing GitLab handle: Kane Chen
Missing GitLab handle: Kashyap Chamarthy
Missing GitLab handle: Keith Busch
Missing GitLab handle: Kohei Tokunaga
Missing GitLab handle: Kuan-Wei Chiu
Missing GitLab handle: Kyle Evans
Missing GitLab handle: Leif Lindholm
Missing GitLab handle: Liu Zhiwei
Missing GitLab handle: LIU Zhiwei
Missing GitLab handle: Li-Wen Hsu
Missing GitLab handle: Li Zhijian
Missing GitLab handle: Luc Michel
Missing GitLab handle: Lukas Straub
Missing GitLab handle: Maciej S. Szmigiero
Missing GitLab handle: Mads Ynddal
Missing GitLab handle: Magnus Kulke
Missing GitLab handle: Maksim Davydov
Missing GitLab handle: Marcelo Tosatti
Missing GitLab handle: Mark Kanda
Missing GitLab handle: Markus Armbruster
Missing GitLab handle: Mathieu Poirier
Missing GitLab handle: Matthew Rosato
Missing GitLab handle: Mauro Carvalho Chehab
Missing GitLab handle: Max Filippov
Missing GitLab handle: Michael Rolnik
Missing GitLab handle: Milan Zamazal
Missing GitLab handle: Nabih Estefan
Missing GitLab handle: Niek Linnenbank
Missing GitLab handle: Ninad Palsule
Missing GitLab handle: Palmer Dabbelt
Missing GitLab handle: Patrick Leis
Missing GitLab handle: Paul Durrant
Missing GitLab handle: Pavel Pisa
Missing GitLab handle: Pedro Barbuda
Missing GitLab handle: Peter Lieven
Missing GitLab handle: Peter Xu
Missing GitLab handle: Phil Dennis-Jordan
Missing GitLab handle: Philipp Tomsich
Missing GitLab handle: Ran Wang
Missing GitLab handle: Raphael Norwitz
Missing GitLab handle: Reinoud Zandijk
Missing GitLab handle: Richard W.M. Jones
Missing GitLab handle: Roman Bolshakov
Missing GitLab handle: Sai Pavan Boddu
Missing GitLab handle: Sairaj Kodilkar
Missing GitLab handle: Samuel Tardieu
Missing GitLab handle: Samuel Thibault
Missing GitLab handle: Sergio Lopez
Missing GitLab handle: Song Gao
Missing GitLab handle: Sourabh
Missing GitLab handle: Sourabh Jain
Missing GitLab handle: Sriram Yagnaraman
Missing GitLab handle: Stafford Horne
Missing GitLab handle: Stefano Stabellini
Missing GitLab handle: Steven Lee
Missing GitLab handle: Strahinja Jankovic
Missing GitLab handle: Subbaraya Sundeep
Missing GitLab handle: Sunil V L
Missing GitLab handle: Sven Schnelle
Missing GitLab handle: Tao Tang
Missing GitLab handle: Thanos Makatos
Missing GitLab handle: Titus Rwantare
Missing GitLab handle: Tomita Moeko
Missing GitLab handle: Tony Krowiak
Missing GitLab handle: Troy Lee
Missing GitLab handle: Tyrone Ting
Missing GitLab handle: Vikram Garhwal
Missing GitLab handle: Viktor Prutyanov
Missing GitLab handle: Vincenzo Maffione
Missing GitLab handle: Viresh Kumar
Missing GitLab handle: WANG Xuerui
Missing GitLab handle: Wei Liu
Missing GitLab handle: Weiwei Li
Missing GitLab handle: Xie Yongji
Missing GitLab handle: Yi Liu
Missing GitLab handle: Yonggang Luo
Missing GitLab handle: Yoshinori Sato
Missing GitLab handle: Yuri Benditovich
Missing GitLab handle: Zhang Chen
Missing GitLab handle: Zhao Liu
Missing GitLab handle: zhenwei pi
Missing GitLab handle: Zhenzhong Duan
Missing GitLab handle: Zhuoying Cai
GitLab handles missing: 161 / present: 57

Plenty of those will have GitLab accounts, but are simply not members
of QEMU. Plenty more probably aren't registered with GitLab at all.

Short of emailing all of those people directly, I don't see a good
way to identify their GitLab accounts (if any), in order to invite
them to the QEMU project. I don't want to blindly invite accounts
which merely have the same name on GitLab as there's too much risk
of getting a mis-match.

Changed in v2:

 - Don't store data in MAINTAINERS file, use a separate mapping
 - Don't require a --gitlab flag to get_maintainer.pl, always
   show the handle
 - Add scripts for updating & analysing the mappings

Daniel P. Berrangé (2):
  gitlab: introduce files mapping GitLab accounts to real names
  get_maintainer: add ability to report Git Lab handle

 .gitlab-map-auto          | 83 +++++++++++++++++++++++++++++++++++++++
 .gitlab-map-manual        | 18 +++++++++
 scripts/get_maintainer.pl | 42 ++++++++++++++++++--
 scripts/gitlab-map-check  | 23 +++++++++++
 scripts/gitlab-map-update | 44 +++++++++++++++++++++
 5 files changed, 206 insertions(+), 4 deletions(-)
 create mode 100644 .gitlab-map-auto
 create mode 100644 .gitlab-map-manual
 create mode 100755 scripts/gitlab-map-check
 create mode 100755 scripts/gitlab-map-update

-- 
2.54.0



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names
  2026-06-24 12:29 [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Daniel P. Berrangé
@ 2026-06-24 12:29 ` Daniel P. Berrangé
  2026-06-24 13:09   ` Philippe Mathieu-Daudé
                     ` (2 more replies)
  2026-06-24 12:29 ` [PATCH v2 2/2] get_maintainer: add ability to report Git Lab handle Daniel P. Berrangé
  2026-06-24 13:19 ` [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Philippe Mathieu-Daudé
  2 siblings, 3 replies; 10+ messages in thread
From: Daniel P. Berrangé @ 2026-06-24 12:29 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alex Bennée, Philippe Mathieu-Daudé, Fabiano Rosas,
	Daniel P. Berrangé

It is desirable to be able to discover the GitLab account handle
assocaited with a real name in the MAINTAINERS file.

Rather that duplicating the same account handle multiple times,
inline with the MAINTAINERS file entries, this introduces mapping
files:

  * .gitlab-map-auto - data automatically queried from GitLab
    using the 'glab' tool and REST API
  * .gitlab-map-manual - manual overrides/augmentation for
    cases where the MAINTAINERS real name does not match the
    GitLab account real name

The former would need refreshing when we add new MAINTAINERS
entries, if the person had to be added as a GitLab account
member. For this purpose scripts/gitlab-map-update can be
used, assuming the user has the 'glab' client tool present
and configured with an access token.

To audit how many maintainers have GitLab handles present/missing
scripts/gitlab-map-check can run a report.

  $ ./scripts/gitlab-map-check
  Missing GitLab handle: Akihiko Odaki
  Missing GitLab handle: Albert Esteve
  ....
  Missing GitLab handle: Zhenzhong Duan
  Missing GitLab handle: Zhuoying Cai
  GitLab handles missing: 161 / present: 57

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 .gitlab-map-auto          | 83 +++++++++++++++++++++++++++++++++++++++
 .gitlab-map-manual        | 18 +++++++++
 scripts/gitlab-map-check  | 23 +++++++++++
 scripts/gitlab-map-update | 44 +++++++++++++++++++++
 4 files changed, 168 insertions(+)
 create mode 100644 .gitlab-map-auto
 create mode 100644 .gitlab-map-manual
 create mode 100755 scripts/gitlab-map-check
 create mode 100755 scripts/gitlab-map-update

diff --git a/.gitlab-map-auto b/.gitlab-map-auto
new file mode 100644
index 0000000000..defecb2c9f
--- /dev/null
+++ b/.gitlab-map-auto
@@ -0,0 +1,83 @@
+# This file is auto-generated by scripts/autolab-map-update
+#
+# This GitLab map associates GitLab account handles
+# with real names, in order to allow mapping from
+# MAINTAINERS entries. The format of entries is
+#
+#    {gitlab-handle}<tab>{real name}
+#
+# Manual overrides must be placed in .gitlab-map-manual
+a1xndr	Alexander Bulekov
+adi-g15-ibm	Aditya Gupta
+agraf	Alexander Graf
+alex.williamson	Alex Williamson
+aliang1	Aihua Liang
+alistair23	Alistair Francis
+anisinha	Ani Sinha
+anthony-linaro	Anthony Roberts
+berrange	Daniel P. Berrangé
+birkelund	Klaus Jensen
+bonzini	Paolo Bonzini
+bonzini	Paolo Bonzini
+brian-cain	Brian Cain
+bsdimp	Warner Losh
+cborntra	Christian Borntraeger
+cleber.gnu	Cleber Rosa
+clegoate	Cédric Le Goater
+cohuck	Cornelia Huck
+cota_	Emilio Cota
+dagrh	Dr. David Alan Gilbert
+danielhb	Daniel Henrique Barboza
+davidhildenbrand	David Hildenbrand
+dgibson	dgibson
+dwmw2	David Woodhouse
+ebblake	Eric Blake
+ehabkost	Eduardo Habkost
+eldondev	Eldon
+epilys	Manos Pitsidianakis
+famzheng	Fam Zheng
+farosas	Fabiano Rosas
+gkurz	Greg Kurz
+gusbromero	Gustavo Romero
+harshpb	Harsh Prateek Bora
+hdeller	Helge Deller
+hreitz	Hanna Czenczek
+imammedo	Igor Mammedov
+jasowang	Jason Wang
+jmacarthur	Jim MacArthur
+jsnow	John Snow
+juan.quintela	Juan Quintela
+kbastian-qemu	Bastian Koppelmann
+kmwolf	Kevin Wolf
+kostyanf14	Kostiantyn Kostiuk
+kraxel	Gerd Hoffmann
+lbmeng	Bin Meng
+legoater	Cédric Le Goater
+lvivier	Laurent Vivier
+marcandre.lureau	Marc-André Lureau
+marcandre.lureau-rh	Marc-André Lureau
+mcayland	Mark Cave-Ayland
+mdroth	Michael Roth
+mediouni-m	M. Mediouni
+mjt0k	Michael Tokarev
+mstredhat	MST
+npiggin	npiggin
+pauldzim	Paul Zimmerman
+philmd	Philippe Mathieu-Daudé
+philmd	Philippe Mathieu-Daudé
+pierrick.bouvier	Pierrick Bouvier
+pipo.sk	Peter Krempa
+pkrempa	Peter Krempa (work)
+pm215	Peter Maydell
+qemu-janitor	Qemu Janitor
+rth7680	Richard Henderson
+schoenebeck	Christian Schoenebeck
+sgarzarella	Stefano Garzarella
+stefanberger	Stefan Berger
+stefanha	Stefan Hajnoczi
+stefanha	Stefan Hajnoczi
+stsquad	Alex Bennée
+stweil	Stefan Weil
+thuth	Thomas Huth
+vsementsov	Vladimir Sementsov-Ogievskiy
+xcancerberox	Joaquin de Andres
diff --git a/.gitlab-map-manual b/.gitlab-map-manual
new file mode 100644
index 0000000000..7326971cdd
--- /dev/null
+++ b/.gitlab-map-manual
@@ -0,0 +1,18 @@
+# This GitLab map associates GitLab account handles
+# with real names, in order to allow mapping from
+# MAINTAINERS entries. The format of entries is
+#
+#    {gitlab-handle}<tab>{real name}
+#
+# This file is manually written, to augment the
+# auto-generated data in .gitlab-map-auto. This
+# needed where a GitLab account real name does
+# not exactly match the MAINTAINERS file real
+# name.
+#
+berrange	Daniel P. Berrange
+dgibson	David Gibson
+hreitz	Hanna Reitz 
+mstredhat	Michael S. Tsirkin
+npiggin	Nicholas Piggin
+mediouni-m	Mohamed Mediouni
diff --git a/scripts/gitlab-map-check b/scripts/gitlab-map-check
new file mode 100755
index 0000000000..69d5b8258a
--- /dev/null
+++ b/scripts/gitlab-map-check
@@ -0,0 +1,23 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+missing=0
+present=0
+
+grep -E '^(R|M):' MAINTAINERS | \
+sed -E -e 's/^(M|R): //' -e 's/ <.*//' | \
+sort | uniq > names.txt
+while IFS= read -r NAME
+do
+  grep "$NAME" .gitlab-map-{auto,manual} > /dev/null
+  if test $? != 0
+  then
+    echo "Missing GitLab handle: $NAME"
+    missing=$(($missing + 1))
+  else
+    present=$(($present + 1))
+  fi
+done < names.txt
+rm -f names.txt
+
+echo "GitLab handles missing: $missing / present: $present"
diff --git a/scripts/gitlab-map-update b/scripts/gitlab-map-update
new file mode 100755
index 0000000000..9fe07a98ee
--- /dev/null
+++ b/scripts/gitlab-map-update
@@ -0,0 +1,44 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+echo "Checking authentication token status"
+glab auth status
+
+if test $? != 0
+then
+  echo "ERROR: not authenticated with gitlab.com"
+  exit 1
+fi
+
+if ! test -f .gitlab-map-auto
+then
+  echo "ERROR: cannot find existing '.gitlab-map-auto file'"
+  echo "ERROR: this must be executed from the root of the"
+  echo "ERROR: git repository checkout"
+  exit 1
+fi
+
+fail=0
+echo "Updating member list from qemu-project"
+glab api --paginate /groups/qemu-project/members | \
+    jq -r -c '.[] | [.username, .name] | @tsv' | \
+    grep -v '^group_3038080_bot' > \
+    .gitlab-map-auto.tmp
+test $? != 0 && fail=1
+
+echo "Updating member list from qemu-project/qemu"
+glab api --paginate /projects/qemu-project%2fqemu/members | \
+    jq -r -c '.[] | [.username, .name] | @tsv' >> \
+    .gitlab-map-auto.tmp
+test $? != 0 && fail=1
+
+if test $fail == 0
+then
+  grep '^#' .gitlab-map-auto > .gitlab-map-auto.new
+  LC_ALL=C sort .gitlab-map-auto.tmp >> .gitlab-map-auto.new
+  mv .gitlab-map-auto.new .gitlab-map-auto
+  echo "OK: GitLab member list updated"
+else
+  echo "ERROR: Updating member list failed"
+fi
+rm -f .gitlab-map-auto.tmp
-- 
2.54.0



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 2/2] get_maintainer: add ability to report Git Lab handle
  2026-06-24 12:29 [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Daniel P. Berrangé
  2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
@ 2026-06-24 12:29 ` Daniel P. Berrangé
  2026-06-24 13:15   ` Alex Bennée
  2026-06-24 13:19 ` [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Philippe Mathieu-Daudé
  2 siblings, 1 reply; 10+ messages in thread
From: Daniel P. Berrangé @ 2026-06-24 12:29 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alex Bennée, Philippe Mathieu-Daudé, Fabiano Rosas,
	Daniel P. Berrangé

With the GitLab mapping files from the previous commit, the
get_manitainer.pl script is now able to report the gitlab
handle for each maintainer/reviewer when displaying output.

For example:

  $ ./scripts/get_maintainer.pl -f hw/scsi/lsi53c895a.c
  Paolo Bonzini <pbonzini@redhat.com> (supporter:SCSI, gitlab:@bonzini)
  Fam Zheng <fam@euphon.net> (reviewer:SCSI, gitlab:@famzheng)
  qemu-devel@nongnu.org (open list:All patches CC here)

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 scripts/get_maintainer.pl | 42 +++++++++++++++++++++++++++++++++++----
 1 file changed, 38 insertions(+), 4 deletions(-)

diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
index 76be402e11..1f518b6792 100755
--- a/scripts/get_maintainer.pl
+++ b/scripts/get_maintainer.pl
@@ -365,6 +365,31 @@ sub read_mailmap {
     close($mailmap_file);
 }
 
+my %gitlabmap;
+
+read_gitlabmap(".gitlab-map-auto");
+read_gitlabmap(".gitlab-map-manual");
+
+sub read_gitlabmap {
+    my $mapfile = shift;
+    open MAP, "<$mapfile"
+	or die "cannot open $mapfile: $!";
+
+    while (<MAP>) {
+	next if /^#/;
+	next if /^\s*$/;
+
+	if (/^(\S+)\t(.*)$/) {
+	    my $handle = $1;
+	    my $realname = $2;
+
+	    $gitlabmap{$realname} = $handle;
+	}
+    }
+
+    close MAP;
+}
+
 ## use the filenames on the command line or find the filenames in the patchfiles
 
 my @files = ();
@@ -1077,10 +1102,15 @@ sub push_email_address {
 	return 0;
     }
 
+    my $gitlab_handle;
+    if (exists $gitlabmap{$name}) {
+	$gitlab_handle = $gitlabmap{$name};
+    }
+
     if (!$email_remove_duplicates) {
-	push(@email_to, [format_email($name, $address, $email_usename), $role]);
+	push(@email_to, [format_email($name, $address, $email_usename), $role, $gitlab_handle]);
     } elsif (!email_inuse($name, $address)) {
-	push(@email_to, [format_email($name, $address, $email_usename), $role]);
+	push(@email_to, [format_email($name, $address, $email_usename), $role, $gitlab_handle]);
 	$email_hash_name{lc($name)}++ if ($name ne "");
 	$email_hash_address{lc($address)}++;
     }
@@ -2026,10 +2056,14 @@ sub merge_email {
     my %saw;
 
     for (@_) {
-	my ($address, $role) = @$_;
+	my ($address, $role, $gitlab_handle) = @$_;
 	if (!$saw{$address}) {
 	    if ($output_roles) {
-		push(@lines, "$address ($role)");
+		if (defined $gitlab_handle) {
+		    push(@lines, "$address ($role, gitlab:\@$gitlab_handle)");
+		} else {
+		    push(@lines, "$address ($role)");
+		}
 	    } else {
 		push(@lines, $address);
 	    }
-- 
2.54.0



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names
  2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
@ 2026-06-24 13:09   ` Philippe Mathieu-Daudé
  2026-06-24 13:11   ` Alex Bennée
  2026-06-24 13:41   ` Fabiano Rosas
  2 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-06-24 13:09 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel; +Cc: Alex Bennée, Fabiano Rosas

On 24/6/26 14:29, Daniel P. Berrangé wrote:
> It is desirable to be able to discover the GitLab account handle
> assocaited with a real name in the MAINTAINERS file.
> 
> Rather that duplicating the same account handle multiple times,
> inline with the MAINTAINERS file entries, this introduces mapping
> files:
> 
>    * .gitlab-map-auto - data automatically queried from GitLab
>      using the 'glab' tool and REST API
>    * .gitlab-map-manual - manual overrides/augmentation for
>      cases where the MAINTAINERS real name does not match the
>      GitLab account real name

Thanks, much simpler to maintain!

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

> The former would need refreshing when we add new MAINTAINERS
> entries, if the person had to be added as a GitLab account
> member. For this purpose scripts/gitlab-map-update can be
> used, assuming the user has the 'glab' client tool present
> and configured with an access token.
> 
> To audit how many maintainers have GitLab handles present/missing
> scripts/gitlab-map-check can run a report.
> 
>    $ ./scripts/gitlab-map-check
>    Missing GitLab handle: Akihiko Odaki
>    Missing GitLab handle: Albert Esteve
>    ....
>    Missing GitLab handle: Zhenzhong Duan
>    Missing GitLab handle: Zhuoying Cai
>    GitLab handles missing: 161 / present: 57
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>   .gitlab-map-auto          | 83 +++++++++++++++++++++++++++++++++++++++
>   .gitlab-map-manual        | 18 +++++++++
>   scripts/gitlab-map-check  | 23 +++++++++++
>   scripts/gitlab-map-update | 44 +++++++++++++++++++++
>   4 files changed, 168 insertions(+)
>   create mode 100644 .gitlab-map-auto
>   create mode 100644 .gitlab-map-manual
>   create mode 100755 scripts/gitlab-map-check
>   create mode 100755 scripts/gitlab-map-update



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names
  2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
  2026-06-24 13:09   ` Philippe Mathieu-Daudé
@ 2026-06-24 13:11   ` Alex Bennée
  2026-06-24 13:41   ` Fabiano Rosas
  2 siblings, 0 replies; 10+ messages in thread
From: Alex Bennée @ 2026-06-24 13:11 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: qemu-devel, Philippe Mathieu-Daudé, Fabiano Rosas

Daniel P. Berrangé <berrange@redhat.com> writes:

> It is desirable to be able to discover the GitLab account handle
> assocaited with a real name in the MAINTAINERS file.
>
> Rather that duplicating the same account handle multiple times,
> inline with the MAINTAINERS file entries, this introduces mapping
> files:
>
>   * .gitlab-map-auto - data automatically queried from GitLab
>     using the 'glab' tool and REST API
>   * .gitlab-map-manual - manual overrides/augmentation for
>     cases where the MAINTAINERS real name does not match the
>     GitLab account real name
>
> The former would need refreshing when we add new MAINTAINERS
> entries, if the person had to be added as a GitLab account
> member. For this purpose scripts/gitlab-map-update can be
> used, assuming the user has the 'glab' client tool present
> and configured with an access token.
>
> To audit how many maintainers have GitLab handles present/missing
> scripts/gitlab-map-check can run a report.
>
>   $ ./scripts/gitlab-map-check
>   Missing GitLab handle: Akihiko Odaki
>   Missing GitLab handle: Albert Esteve
>   ....
>   Missing GitLab handle: Zhenzhong Duan
>   Missing GitLab handle: Zhuoying Cai
>   GitLab handles missing: 161 / present: 57
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  .gitlab-map-auto          | 83 +++++++++++++++++++++++++++++++++++++++
>  .gitlab-map-manual        | 18 +++++++++
>  scripts/gitlab-map-check  | 23 +++++++++++
>  scripts/gitlab-map-update | 44 +++++++++++++++++++++
>  4 files changed, 168 insertions(+)
>  create mode 100644 .gitlab-map-auto
>  create mode 100644 .gitlab-map-manual
>  create mode 100755 scripts/gitlab-map-check
>  create mode 100755 scripts/gitlab-map-update
>
> diff --git a/.gitlab-map-auto b/.gitlab-map-auto
> new file mode 100644
> index 0000000000..defecb2c9f
> --- /dev/null
> +++ b/.gitlab-map-auto
> @@ -0,0 +1,83 @@
> +# This file is auto-generated by scripts/autolab-map-update
> +#
> +# This GitLab map associates GitLab account handles
> +# with real names, in order to allow mapping from
> +# MAINTAINERS entries. The format of entries is
> +#
> +#    {gitlab-handle}<tab>{real name}
> +#
> +# Manual overrides must be placed in .gitlab-map-manual
> +a1xndr	Alexander Bulekov
> +adi-g15-ibm	Aditya Gupta
> +agraf	Alexander Graf
> +alex.williamson	Alex Williamson
> +aliang1	Aihua Liang
> +alistair23	Alistair Francis
> +anisinha	Ani Sinha
> +anthony-linaro	Anthony Roberts
> +berrange	Daniel P. Berrangé
> +birkelund	Klaus Jensen
> +bonzini	Paolo Bonzini
> +bonzini	Paolo Bonzini
> +brian-cain	Brian Cain
> +bsdimp	Warner Losh
> +cborntra	Christian Borntraeger
> +cleber.gnu	Cleber Rosa
> +clegoate	Cédric Le Goater
> +cohuck	Cornelia Huck
> +cota_	Emilio Cota
> +dagrh	Dr. David Alan Gilbert
> +danielhb	Daniel Henrique Barboza
> +davidhildenbrand	David Hildenbrand
> +dgibson	dgibson
> +dwmw2	David Woodhouse
> +ebblake	Eric Blake
> +ehabkost	Eduardo Habkost
> +eldondev	Eldon
> +epilys	Manos Pitsidianakis
> +famzheng	Fam Zheng
> +farosas	Fabiano Rosas
> +gkurz	Greg Kurz
> +gusbromero	Gustavo Romero
> +harshpb	Harsh Prateek Bora
> +hdeller	Helge Deller
> +hreitz	Hanna Czenczek
> +imammedo	Igor Mammedov
> +jasowang	Jason Wang
> +jmacarthur	Jim MacArthur
> +jsnow	John Snow
> +juan.quintela	Juan Quintela
> +kbastian-qemu	Bastian Koppelmann
> +kmwolf	Kevin Wolf
> +kostyanf14	Kostiantyn Kostiuk
> +kraxel	Gerd Hoffmann
> +lbmeng	Bin Meng
> +legoater	Cédric Le Goater
> +lvivier	Laurent Vivier
> +marcandre.lureau	Marc-André Lureau
> +marcandre.lureau-rh	Marc-André Lureau
> +mcayland	Mark Cave-Ayland
> +mdroth	Michael Roth
> +mediouni-m	M. Mediouni
> +mjt0k	Michael Tokarev
> +mstredhat	MST
> +npiggin	npiggin
> +pauldzim	Paul Zimmerman
> +philmd	Philippe Mathieu-Daudé
> +philmd	Philippe Mathieu-Daudé
> +pierrick.bouvier	Pierrick Bouvier
> +pipo.sk	Peter Krempa
> +pkrempa	Peter Krempa (work)
> +pm215	Peter Maydell
> +qemu-janitor	Qemu Janitor
> +rth7680	Richard Henderson
> +schoenebeck	Christian Schoenebeck
> +sgarzarella	Stefano Garzarella
> +stefanberger	Stefan Berger
> +stefanha	Stefan Hajnoczi
> +stefanha	Stefan Hajnoczi
> +stsquad	Alex Bennée
> +stweil	Stefan Weil
> +thuth	Thomas Huth
> +vsementsov	Vladimir Sementsov-Ogievskiy
> +xcancerberox	Joaquin de Andres
> diff --git a/.gitlab-map-manual b/.gitlab-map-manual
> new file mode 100644
> index 0000000000..7326971cdd
> --- /dev/null
> +++ b/.gitlab-map-manual
> @@ -0,0 +1,18 @@
> +# This GitLab map associates GitLab account handles
> +# with real names, in order to allow mapping from
> +# MAINTAINERS entries. The format of entries is
> +#
> +#    {gitlab-handle}<tab>{real name}
> +#
> +# This file is manually written, to augment the
> +# auto-generated data in .gitlab-map-auto. This
> +# needed where a GitLab account real name does
> +# not exactly match the MAINTAINERS file real
> +# name.
> +#
> +berrange	Daniel P. Berrange
> +dgibson	David Gibson
> +hreitz	Hanna Reitz 
> +mstredhat	Michael S. Tsirkin
> +npiggin	Nicholas Piggin
> +mediouni-m	Mohamed Mediouni
> diff --git a/scripts/gitlab-map-check b/scripts/gitlab-map-check
> new file mode 100755
> index 0000000000..69d5b8258a
> --- /dev/null
> +++ b/scripts/gitlab-map-check
> @@ -0,0 +1,23 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +missing=0
> +present=0
> +
> +grep -E '^(R|M):' MAINTAINERS | \
> +sed -E -e 's/^(M|R): //' -e 's/ <.*//' | \
> +sort | uniq > names.txt
> +while IFS= read -r NAME
> +do
> +  grep "$NAME" .gitlab-map-{auto,manual} > /dev/null
> +  if test $? != 0
> +  then
> +    echo "Missing GitLab handle: $NAME"
> +    missing=$(($missing + 1))
> +  else
> +    present=$(($present + 1))
> +  fi
> +done < names.txt
> +rm -f names.txt
> +
> +echo "GitLab handles missing: $missing / present: $present"
> diff --git a/scripts/gitlab-map-update b/scripts/gitlab-map-update
> new file mode 100755
> index 0000000000..9fe07a98ee
> --- /dev/null
> +++ b/scripts/gitlab-map-update
> @@ -0,0 +1,44 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +echo "Checking authentication token status"
> +glab auth status
> +
> +if test $? != 0
> +then
> +  echo "ERROR: not authenticated with gitlab.com"
> +  exit 1
> +fi
> +
> +if ! test -f .gitlab-map-auto
> +then
> +  echo "ERROR: cannot find existing '.gitlab-map-auto file'"
> +  echo "ERROR: this must be executed from the root of the"
> +  echo "ERROR: git repository checkout"
> +  exit 1
> +fi
> +
> +fail=0
> +echo "Updating member list from qemu-project"
> +glab api --paginate /groups/qemu-project/members | \
> +    jq -r -c '.[] | [.username, .name] | @tsv' | \
> +    grep -v '^group_3038080_bot' > \
> +    .gitlab-map-auto.tmp
> +test $? != 0 && fail=1
> +
> +echo "Updating member list from qemu-project/qemu"
> +glab api --paginate /projects/qemu-project%2fqemu/members | \
> +    jq -r -c '.[] | [.username, .name] | @tsv' >> \
> +    .gitlab-map-auto.tmp
> +test $? != 0 && fail=1
> +
> +if test $fail == 0

Testing with:

$ env GITLAB_TOKEN=(pass gitlab-qemu-api)  ./scripts/gitlab-map-update
Checking authentication token status
gitlab.com
  ✓ Logged in to gitlab.com as group_3038080_bot_40a04d3deae510d9bf50c5bebbb7bcd3 (/home/alex/.config/glab-cli/config.yml)
  ✓ Git operations for gitlab.com configured to use https protocol.
  ✓ API calls for gitlab.com are made over https protocol.
  ✓ REST API Endpoint: https://gitlab.com/api/v4/
  ✓ GraphQL Endpoint: https://gitlab.com/api/graphql/
  ! No token provided in configuration file.

! One of GITLAB_TOKEN, GITLAB_ACCESS_TOKEN, OAUTH_TOKEN environment variables is set. It will be used for all authentication.
Updating member list from qemu-project
Updating member list from qemu-project/qemu
./scripts/gitlab-map-update: 35: test: 0: unexpected operator
ERROR: Updating member list failed

> +then
> +  grep '^#' .gitlab-map-auto > .gitlab-map-auto.new
> +  LC_ALL=C sort .gitlab-map-auto.tmp >> .gitlab-map-auto.new
> +  mv .gitlab-map-auto.new .gitlab-map-auto
> +  echo "OK: GitLab member list updated"
> +else
> +  echo "ERROR: Updating member list failed"
> +fi
> +rm -f .gitlab-map-auto.tmp

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 2/2] get_maintainer: add ability to report Git Lab handle
  2026-06-24 12:29 ` [PATCH v2 2/2] get_maintainer: add ability to report Git Lab handle Daniel P. Berrangé
@ 2026-06-24 13:15   ` Alex Bennée
  0 siblings, 0 replies; 10+ messages in thread
From: Alex Bennée @ 2026-06-24 13:15 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: qemu-devel, Philippe Mathieu-Daudé, Fabiano Rosas

Daniel P. Berrangé <berrange@redhat.com> writes:

> With the GitLab mapping files from the previous commit, the
> get_manitainer.pl script is now able to report the gitlab
> handle for each maintainer/reviewer when displaying output.
>
> For example:
>
>   $ ./scripts/get_maintainer.pl -f hw/scsi/lsi53c895a.c
>   Paolo Bonzini <pbonzini@redhat.com> (supporter:SCSI, gitlab:@bonzini)
>   Fam Zheng <fam@euphon.net> (reviewer:SCSI, gitlab:@famzheng)
>   qemu-devel@nongnu.org (open list:All patches CC here)

I suspect it gets tripped up by utf-8 stuff:

  ➜  ./scripts/get_maintainer.pl -f contrib/gitdm/aliases 
  "Alex Bennée" <alex.bennee@linaro.org> (odd fixer:GIT Data Mining C...)
  qemu-devel@nongnu.org (open list:All patches CC here)

misses my tag.

However I think this approach is much cleaner. The other option would be
embedding @refs in the M: line:

  M: Alex Bennée <alex.bennee@linaro.org> @stsquad

and letting the script handle it. But I didn't want to hack on
get_maintainer.pl which is why I started playing with a python version.
However I need to add some features to it to reach usable parity with
the perl script.

>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  scripts/get_maintainer.pl | 42 +++++++++++++++++++++++++++++++++++----
>  1 file changed, 38 insertions(+), 4 deletions(-)
>
> diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> index 76be402e11..1f518b6792 100755
> --- a/scripts/get_maintainer.pl
> +++ b/scripts/get_maintainer.pl
> @@ -365,6 +365,31 @@ sub read_mailmap {
>      close($mailmap_file);
>  }
>  
> +my %gitlabmap;
> +
> +read_gitlabmap(".gitlab-map-auto");
> +read_gitlabmap(".gitlab-map-manual");
> +
> +sub read_gitlabmap {
> +    my $mapfile = shift;
> +    open MAP, "<$mapfile"
> +	or die "cannot open $mapfile: $!";
> +
> +    while (<MAP>) {
> +	next if /^#/;
> +	next if /^\s*$/;
> +
> +	if (/^(\S+)\t(.*)$/) {
> +	    my $handle = $1;
> +	    my $realname = $2;
> +
> +	    $gitlabmap{$realname} = $handle;
> +	}
> +    }
> +
> +    close MAP;
> +}
> +
>  ## use the filenames on the command line or find the filenames in the patchfiles
>  
>  my @files = ();
> @@ -1077,10 +1102,15 @@ sub push_email_address {
>  	return 0;
>      }
>  
> +    my $gitlab_handle;
> +    if (exists $gitlabmap{$name}) {
> +	$gitlab_handle = $gitlabmap{$name};
> +    }
> +
>      if (!$email_remove_duplicates) {
> -	push(@email_to, [format_email($name, $address, $email_usename), $role]);
> +	push(@email_to, [format_email($name, $address, $email_usename), $role, $gitlab_handle]);
>      } elsif (!email_inuse($name, $address)) {
> -	push(@email_to, [format_email($name, $address, $email_usename), $role]);
> +	push(@email_to, [format_email($name, $address, $email_usename), $role, $gitlab_handle]);
>  	$email_hash_name{lc($name)}++ if ($name ne "");
>  	$email_hash_address{lc($address)}++;
>      }
> @@ -2026,10 +2056,14 @@ sub merge_email {
>      my %saw;
>  
>      for (@_) {
> -	my ($address, $role) = @$_;
> +	my ($address, $role, $gitlab_handle) = @$_;
>  	if (!$saw{$address}) {
>  	    if ($output_roles) {
> -		push(@lines, "$address ($role)");
> +		if (defined $gitlab_handle) {
> +		    push(@lines, "$address ($role, gitlab:\@$gitlab_handle)");
> +		} else {
> +		    push(@lines, "$address ($role)");
> +		}
>  	    } else {
>  		push(@lines, $address);
>  	    }

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles
  2026-06-24 12:29 [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Daniel P. Berrangé
  2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
  2026-06-24 12:29 ` [PATCH v2 2/2] get_maintainer: add ability to report Git Lab handle Daniel P. Berrangé
@ 2026-06-24 13:19 ` Philippe Mathieu-Daudé
  2026-06-24 17:38   ` Daniel P. Berrangé
  2 siblings, 1 reply; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-06-24 13:19 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel; +Cc: Alex Bennée, Fabiano Rosas

On 24/6/26 14:29, Daniel P. Berrangé wrote:
> When triaging GitLab issues, whether regular bugs or security
> disclosures, we need to be able to assign suitable accounts.
> 
> We can only assign Git Lab handles for accounts that are members
> of the QEMU group, or QEMU repository with the "Reporter" role
> or higher.
> 
> Currently one needs to run 'get_maintainer.pl -f <file>' to get
> the maintainer / reviewer names & emails, and then look in the
> GitLab members page to see if there is a match.
> 
> This simplifies that by including the GitLab handle alongside
> the email addresses:
> 
> The GitLab account handle -> real name mapping is stored in
> separate files .gitlab-map-auto & .gitlab-map-manual to avoid
> redundancy in the MAINTAINERS file. The former file is
> auto-generated and catches 99% of the mappings, the latter is
> for manual fixups.
> 
> With this series applied as is, we get the following stats
> 
> $ ./scripts/gitlab-map-check
> Missing GitLab handle: Akihiko Odaki
> Missing GitLab handle: Albert Esteve
> Missing GitLab handle: Alberto Garcia
> Missing GitLab handle: Alejandro Jimenez
> Missing GitLab handle: Aleksandar Rikalo
> Missing GitLab handle: Alessandro Di Federico
> Missing GitLab handle: Alexandre Iooss
> Missing GitLab handle: Alexandre Ratchov
> Missing GitLab handle: Alexey Kardashevskiy
> Missing GitLab handle: Amit Shah
> Missing GitLab handle: Andrew Jeffery
> Missing GitLab handle: Anthony PERARD
> Missing GitLab handle: Anton Johansson
> Missing GitLab handle: Antony Pavlov
> Missing GitLab handle: Ari Sundholm
> Missing GitLab handle: Artyom Tarasenko
> Missing GitLab handle: Aurelien Jarno
> Missing GitLab handle: BALATON Zoltan
> Missing GitLab handle: Ben Chaney
> Missing GitLab handle: Bernhard Beschow
> Missing GitLab handle: Bibo Mao
> Missing GitLab handle: Brad Smith
> Missing GitLab handle: Canokeys.org
> Missing GitLab handle: Chao Liu
> Missing GitLab handle: Chinmay Rath
> Missing GitLab handle: Christoph Muellner
> Missing GitLab handle: Clément Chigot
> Missing GitLab handle: Clément Mathieu--Drif
> Missing GitLab handle: Collin Walling
> Missing GitLab handle: Corey Minyard
> Missing GitLab handle: Darren Kenny
> Missing GitLab handle: Denis V. Lunev
> Missing GitLab handle: Dmitry Fleytman
> Missing GitLab handle: Dmitry Osipenko
> Missing GitLab handle: Dorjoy Chowdhury
> Missing GitLab handle: Doru Blânzeanu
> Missing GitLab handle: Edgar E. Iglesias
> Missing GitLab handle: Elena Ufimtseva
> Missing GitLab handle: Eric Auger
> Missing GitLab handle: Eric Farman
> Missing GitLab handle: Eugenio Pérez
> Missing GitLab handle: Farhan Ali
> Missing GitLab handle: Felipe Balbi
> Missing GitLab handle: Francisco Iglesias
> Missing GitLab handle: Frederic Konrad
> Missing GitLab handle: Gaurav Sharma
> Missing GitLab handle: Gautam Gala
> Missing GitLab handle: Gautam Menghani
> Missing GitLab handle: Giuseppe Lettieri
> Missing GitLab handle: Glenn Miles
> Missing GitLab handle: Gonglei
> Missing GitLab handle: Haixu Cui
> Missing GitLab handle: Halil Pasic
> Missing GitLab handle: Hao Wu
> Missing GitLab handle: Hari Bathini
> Missing GitLab handle: Hendrik Brueckner
> Missing GitLab handle: Hervé Poussineau
> Missing GitLab handle: Hongren (Zenithal) Zheng
> Missing GitLab handle: Huacai Chen
> Missing GitLab handle: Hyman Huang
> Missing GitLab handle: Ilya Dryomov
> Missing GitLab handle: Ilya Leoshkevich
> Missing GitLab handle: Ilya Maximets
> Missing GitLab handle: Jagannathan Raman
> Missing GitLab handle: Jamin Lin
> Missing GitLab handle: Jan Kiszka
> Missing GitLab handle: Jared Rossi
> Missing GitLab handle: Jason Herne
> Missing GitLab handle: Jean-Christophe Dubois
> Missing GitLab handle: Jesper Devantier
> Missing GitLab handle: Jeuk Kim
> Missing GitLab handle: Jiaxun Yang
> Missing GitLab handle: Jiri Pirko
> Missing GitLab handle: Jiri Slaby
> Missing GitLab handle: Joe Komlodi
> Missing GitLab handle: Joel Stanley
> Missing GitLab handle: John Levon
> Missing GitLab handle: Jonathan Cameron
> Missing GitLab handle: Kane Chen
> Missing GitLab handle: Kashyap Chamarthy
> Missing GitLab handle: Keith Busch
> Missing GitLab handle: Kohei Tokunaga
> Missing GitLab handle: Kuan-Wei Chiu
> Missing GitLab handle: Kyle Evans
> Missing GitLab handle: Leif Lindholm
> Missing GitLab handle: Liu Zhiwei
> Missing GitLab handle: LIU Zhiwei
> Missing GitLab handle: Li-Wen Hsu
> Missing GitLab handle: Li Zhijian
> Missing GitLab handle: Luc Michel
> Missing GitLab handle: Lukas Straub
> Missing GitLab handle: Maciej S. Szmigiero
> Missing GitLab handle: Mads Ynddal
> Missing GitLab handle: Magnus Kulke
> Missing GitLab handle: Maksim Davydov
> Missing GitLab handle: Marcelo Tosatti
> Missing GitLab handle: Mark Kanda
> Missing GitLab handle: Markus Armbruster
> Missing GitLab handle: Mathieu Poirier
> Missing GitLab handle: Matthew Rosato
> Missing GitLab handle: Mauro Carvalho Chehab
> Missing GitLab handle: Max Filippov
> Missing GitLab handle: Michael Rolnik
> Missing GitLab handle: Milan Zamazal
> Missing GitLab handle: Nabih Estefan
> Missing GitLab handle: Niek Linnenbank
> Missing GitLab handle: Ninad Palsule
> Missing GitLab handle: Palmer Dabbelt
> Missing GitLab handle: Patrick Leis
> Missing GitLab handle: Paul Durrant
> Missing GitLab handle: Pavel Pisa
> Missing GitLab handle: Pedro Barbuda
> Missing GitLab handle: Peter Lieven
> Missing GitLab handle: Peter Xu
> Missing GitLab handle: Phil Dennis-Jordan
> Missing GitLab handle: Philipp Tomsich
> Missing GitLab handle: Ran Wang
> Missing GitLab handle: Raphael Norwitz
> Missing GitLab handle: Reinoud Zandijk
> Missing GitLab handle: Richard W.M. Jones
> Missing GitLab handle: Roman Bolshakov
> Missing GitLab handle: Sai Pavan Boddu
> Missing GitLab handle: Sairaj Kodilkar
> Missing GitLab handle: Samuel Tardieu
> Missing GitLab handle: Samuel Thibault
> Missing GitLab handle: Sergio Lopez
> Missing GitLab handle: Song Gao
> Missing GitLab handle: Sourabh
> Missing GitLab handle: Sourabh Jain
> Missing GitLab handle: Sriram Yagnaraman
> Missing GitLab handle: Stafford Horne
> Missing GitLab handle: Stefano Stabellini
> Missing GitLab handle: Steven Lee
> Missing GitLab handle: Strahinja Jankovic
> Missing GitLab handle: Subbaraya Sundeep
> Missing GitLab handle: Sunil V L
> Missing GitLab handle: Sven Schnelle
> Missing GitLab handle: Tao Tang
> Missing GitLab handle: Thanos Makatos
> Missing GitLab handle: Titus Rwantare
> Missing GitLab handle: Tomita Moeko
> Missing GitLab handle: Tony Krowiak
> Missing GitLab handle: Troy Lee
> Missing GitLab handle: Tyrone Ting
> Missing GitLab handle: Vikram Garhwal
> Missing GitLab handle: Viktor Prutyanov
> Missing GitLab handle: Vincenzo Maffione
> Missing GitLab handle: Viresh Kumar
> Missing GitLab handle: WANG Xuerui
> Missing GitLab handle: Wei Liu
> Missing GitLab handle: Weiwei Li
> Missing GitLab handle: Xie Yongji
> Missing GitLab handle: Yi Liu
> Missing GitLab handle: Yonggang Luo
> Missing GitLab handle: Yoshinori Sato
> Missing GitLab handle: Yuri Benditovich
> Missing GitLab handle: Zhang Chen
> Missing GitLab handle: Zhao Liu
> Missing GitLab handle: zhenwei pi
> Missing GitLab handle: Zhenzhong Duan
> Missing GitLab handle: Zhuoying Cai
> GitLab handles missing: 161 / present: 57
> 
> Plenty of those will have GitLab accounts, but are simply not members
> of QEMU. Plenty more probably aren't registered with GitLab at all.
> 
> Short of emailing all of those people directly, I don't see a good
> way to identify their GitLab accounts (if any), in order to invite
> them to the QEMU project. I don't want to blindly invite accounts
> which merely have the same name on GitLab as there's too much risk
> of getting a mis-match.
> 
> Changed in v2:
> 
>   - Don't store data in MAINTAINERS file, use a separate mapping
>   - Don't require a --gitlab flag to get_maintainer.pl, always
>     show the handle
>   - Add scripts for updating & analysing the mappings
> 
> Daniel P. Berrangé (2):
>    gitlab: introduce files mapping GitLab accounts to real names
>    get_maintainer: add ability to report Git Lab handle

No clue why Hanna is listed here...

Applying: gitlab: introduce files mapping GitLab accounts to real names
Applying: get_maintainer: add ability to report Git Lab handle
.git/rebase-apply/patch:121: trailing whitespace.
hreitz	Hanna Reitz
warning: 1 line adds whitespace errors.

Anyhow,
Tested-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names
  2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
  2026-06-24 13:09   ` Philippe Mathieu-Daudé
  2026-06-24 13:11   ` Alex Bennée
@ 2026-06-24 13:41   ` Fabiano Rosas
  2026-06-24 16:43     ` Daniel P. Berrangé
  2 siblings, 1 reply; 10+ messages in thread
From: Fabiano Rosas @ 2026-06-24 13:41 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel
  Cc: Alex Bennée, Philippe Mathieu-Daudé,
	Daniel P. Berrangé

Daniel P. Berrangé <berrange@redhat.com> writes:

> It is desirable to be able to discover the GitLab account handle
> assocaited with a real name in the MAINTAINERS file.
>
> Rather that duplicating the same account handle multiple times,
> inline with the MAINTAINERS file entries, this introduces mapping
> files:
>
>   * .gitlab-map-auto - data automatically queried from GitLab
>     using the 'glab' tool and REST API
>   * .gitlab-map-manual - manual overrides/augmentation for
>     cases where the MAINTAINERS real name does not match the
>     GitLab account real name
>

Could we maybe use the username/username entries in .gitlab-map-auto to
validate what's being added as username/realname to .gitlab-map-manual?
So we don't accept by accident a mapping of
random-username/real-maintainer-name.

> The former would need refreshing when we add new MAINTAINERS
> entries, if the person had to be added as a GitLab account
> member. For this purpose scripts/gitlab-map-update can be
> used, assuming the user has the 'glab' client tool present
> and configured with an access token.
>
> To audit how many maintainers have GitLab handles present/missing
> scripts/gitlab-map-check can run a report.
>

On the same line as above, what about entries in .gitlab-map-manual that
don't correspond to any MAINTAINERS entry?

>   $ ./scripts/gitlab-map-check
>   Missing GitLab handle: Akihiko Odaki
>   Missing GitLab handle: Albert Esteve
>   ....
>   Missing GitLab handle: Zhenzhong Duan
>   Missing GitLab handle: Zhuoying Cai
>   GitLab handles missing: 161 / present: 57
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  .gitlab-map-auto          | 83 +++++++++++++++++++++++++++++++++++++++
>  .gitlab-map-manual        | 18 +++++++++
>  scripts/gitlab-map-check  | 23 +++++++++++
>  scripts/gitlab-map-update | 44 +++++++++++++++++++++
>  4 files changed, 168 insertions(+)
>  create mode 100644 .gitlab-map-auto
>  create mode 100644 .gitlab-map-manual
>  create mode 100755 scripts/gitlab-map-check
>  create mode 100755 scripts/gitlab-map-update
>
> diff --git a/.gitlab-map-auto b/.gitlab-map-auto
> new file mode 100644
> index 0000000000..defecb2c9f
> --- /dev/null
> +++ b/.gitlab-map-auto
> @@ -0,0 +1,83 @@
> +# This file is auto-generated by scripts/autolab-map-update
> +#
> +# This GitLab map associates GitLab account handles
> +# with real names, in order to allow mapping from
> +# MAINTAINERS entries. The format of entries is
> +#
> +#    {gitlab-handle}<tab>{real name}
> +#
> +# Manual overrides must be placed in .gitlab-map-manual
> +a1xndr	Alexander Bulekov
> +adi-g15-ibm	Aditya Gupta
> +agraf	Alexander Graf
> +alex.williamson	Alex Williamson
> +aliang1	Aihua Liang
> +alistair23	Alistair Francis
> +anisinha	Ani Sinha
> +anthony-linaro	Anthony Roberts
> +berrange	Daniel P. Berrangé
> +birkelund	Klaus Jensen
> +bonzini	Paolo Bonzini
> +bonzini	Paolo Bonzini
> +brian-cain	Brian Cain
> +bsdimp	Warner Losh
> +cborntra	Christian Borntraeger
> +cleber.gnu	Cleber Rosa
> +clegoate	Cédric Le Goater
> +cohuck	Cornelia Huck
> +cota_	Emilio Cota
> +dagrh	Dr. David Alan Gilbert
> +danielhb	Daniel Henrique Barboza
> +davidhildenbrand	David Hildenbrand
> +dgibson	dgibson
> +dwmw2	David Woodhouse
> +ebblake	Eric Blake
> +ehabkost	Eduardo Habkost
> +eldondev	Eldon
> +epilys	Manos Pitsidianakis
> +famzheng	Fam Zheng
> +farosas	Fabiano Rosas
> +gkurz	Greg Kurz
> +gusbromero	Gustavo Romero
> +harshpb	Harsh Prateek Bora
> +hdeller	Helge Deller
> +hreitz	Hanna Czenczek
> +imammedo	Igor Mammedov
> +jasowang	Jason Wang
> +jmacarthur	Jim MacArthur
> +jsnow	John Snow
> +juan.quintela	Juan Quintela
> +kbastian-qemu	Bastian Koppelmann
> +kmwolf	Kevin Wolf
> +kostyanf14	Kostiantyn Kostiuk
> +kraxel	Gerd Hoffmann
> +lbmeng	Bin Meng
> +legoater	Cédric Le Goater
> +lvivier	Laurent Vivier
> +marcandre.lureau	Marc-André Lureau
> +marcandre.lureau-rh	Marc-André Lureau
> +mcayland	Mark Cave-Ayland
> +mdroth	Michael Roth
> +mediouni-m	M. Mediouni
> +mjt0k	Michael Tokarev
> +mstredhat	MST
> +npiggin	npiggin
> +pauldzim	Paul Zimmerman
> +philmd	Philippe Mathieu-Daudé
> +philmd	Philippe Mathieu-Daudé
> +pierrick.bouvier	Pierrick Bouvier
> +pipo.sk	Peter Krempa
> +pkrempa	Peter Krempa (work)
> +pm215	Peter Maydell
> +qemu-janitor	Qemu Janitor
> +rth7680	Richard Henderson
> +schoenebeck	Christian Schoenebeck
> +sgarzarella	Stefano Garzarella
> +stefanberger	Stefan Berger
> +stefanha	Stefan Hajnoczi
> +stefanha	Stefan Hajnoczi
> +stsquad	Alex Bennée
> +stweil	Stefan Weil
> +thuth	Thomas Huth
> +vsementsov	Vladimir Sementsov-Ogievskiy
> +xcancerberox	Joaquin de Andres
> diff --git a/.gitlab-map-manual b/.gitlab-map-manual
> new file mode 100644
> index 0000000000..7326971cdd
> --- /dev/null
> +++ b/.gitlab-map-manual
> @@ -0,0 +1,18 @@
> +# This GitLab map associates GitLab account handles
> +# with real names, in order to allow mapping from
> +# MAINTAINERS entries. The format of entries is
> +#
> +#    {gitlab-handle}<tab>{real name}
> +#
> +# This file is manually written, to augment the
> +# auto-generated data in .gitlab-map-auto. This
> +# needed where a GitLab account real name does
> +# not exactly match the MAINTAINERS file real
> +# name.
> +#
> +berrange	Daniel P. Berrange
> +dgibson	David Gibson
> +hreitz	Hanna Reitz 
> +mstredhat	Michael S. Tsirkin
> +npiggin	Nicholas Piggin
> +mediouni-m	Mohamed Mediouni
> diff --git a/scripts/gitlab-map-check b/scripts/gitlab-map-check
> new file mode 100755
> index 0000000000..69d5b8258a
> --- /dev/null
> +++ b/scripts/gitlab-map-check
> @@ -0,0 +1,23 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +missing=0
> +present=0
> +
> +grep -E '^(R|M):' MAINTAINERS | \
> +sed -E -e 's/^(M|R): //' -e 's/ <.*//' | \
> +sort | uniq > names.txt
> +while IFS= read -r NAME
> +do
> +  grep "$NAME" .gitlab-map-{auto,manual} > /dev/null
> +  if test $? != 0
> +  then
> +    echo "Missing GitLab handle: $NAME"
> +    missing=$(($missing + 1))
> +  else
> +    present=$(($present + 1))
> +  fi
> +done < names.txt
> +rm -f names.txt
> +
> +echo "GitLab handles missing: $missing / present: $present"
> diff --git a/scripts/gitlab-map-update b/scripts/gitlab-map-update
> new file mode 100755
> index 0000000000..9fe07a98ee
> --- /dev/null
> +++ b/scripts/gitlab-map-update
> @@ -0,0 +1,44 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +echo "Checking authentication token status"
> +glab auth status
> +
> +if test $? != 0
> +then
> +  echo "ERROR: not authenticated with gitlab.com"
> +  exit 1
> +fi
> +
> +if ! test -f .gitlab-map-auto
> +then
> +  echo "ERROR: cannot find existing '.gitlab-map-auto file'"
> +  echo "ERROR: this must be executed from the root of the"
> +  echo "ERROR: git repository checkout"
> +  exit 1
> +fi
> +
> +fail=0
> +echo "Updating member list from qemu-project"
> +glab api --paginate /groups/qemu-project/members | \
> +    jq -r -c '.[] | [.username, .name] | @tsv' | \
> +    grep -v '^group_3038080_bot' > \
> +    .gitlab-map-auto.tmp
> +test $? != 0 && fail=1
> +
> +echo "Updating member list from qemu-project/qemu"
> +glab api --paginate /projects/qemu-project%2fqemu/members | \
> +    jq -r -c '.[] | [.username, .name] | @tsv' >> \
> +    .gitlab-map-auto.tmp
> +test $? != 0 && fail=1
> +
> +if test $fail == 0
> +then
> +  grep '^#' .gitlab-map-auto > .gitlab-map-auto.new
> +  LC_ALL=C sort .gitlab-map-auto.tmp >> .gitlab-map-auto.new
> +  mv .gitlab-map-auto.new .gitlab-map-auto
> +  echo "OK: GitLab member list updated"
> +else
> +  echo "ERROR: Updating member list failed"
> +fi
> +rm -f .gitlab-map-auto.tmp


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names
  2026-06-24 13:41   ` Fabiano Rosas
@ 2026-06-24 16:43     ` Daniel P. Berrangé
  0 siblings, 0 replies; 10+ messages in thread
From: Daniel P. Berrangé @ 2026-06-24 16:43 UTC (permalink / raw)
  To: Fabiano Rosas; +Cc: qemu-devel, Alex Bennée, Philippe Mathieu-Daudé

On Wed, Jun 24, 2026 at 10:41:13AM -0300, Fabiano Rosas wrote:
> Daniel P. Berrangé <berrange@redhat.com> writes:
> 
> > It is desirable to be able to discover the GitLab account handle
> > assocaited with a real name in the MAINTAINERS file.
> >
> > Rather that duplicating the same account handle multiple times,
> > inline with the MAINTAINERS file entries, this introduces mapping
> > files:
> >
> >   * .gitlab-map-auto - data automatically queried from GitLab
> >     using the 'glab' tool and REST API
> >   * .gitlab-map-manual - manual overrides/augmentation for
> >     cases where the MAINTAINERS real name does not match the
> >     GitLab account real name
> >
> 
> Could we maybe use the username/username entries in .gitlab-map-auto to
> validate what's being added as username/realname to .gitlab-map-manual?
> So we don't accept by accident a mapping of
> random-username/real-maintainer-name.

Yes, we could put that in the 'check' script.

> 
> > The former would need refreshing when we add new MAINTAINERS
> > entries, if the person had to be added as a GitLab account
> > member. For this purpose scripts/gitlab-map-update can be
> > used, assuming the user has the 'glab' client tool present
> > and configured with an access token.
> >
> > To audit how many maintainers have GitLab handles present/missing
> > scripts/gitlab-map-check can run a report.
> >
> 
> On the same line as above, what about entries in .gitlab-map-manual that
> don't correspond to any MAINTAINERS entry?

That would be stale data, but it is harmless as it means that
get_maintainers.pl would never be trying to look up any
gitlab account for that real name.

> 
> >   $ ./scripts/gitlab-map-check
> >   Missing GitLab handle: Akihiko Odaki
> >   Missing GitLab handle: Albert Esteve
> >   ....
> >   Missing GitLab handle: Zhenzhong Duan
> >   Missing GitLab handle: Zhuoying Cai
> >   GitLab handles missing: 161 / present: 57
> >
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> >  .gitlab-map-auto          | 83 +++++++++++++++++++++++++++++++++++++++
> >  .gitlab-map-manual        | 18 +++++++++
> >  scripts/gitlab-map-check  | 23 +++++++++++
> >  scripts/gitlab-map-update | 44 +++++++++++++++++++++
> >  4 files changed, 168 insertions(+)
> >  create mode 100644 .gitlab-map-auto
> >  create mode 100644 .gitlab-map-manual
> >  create mode 100755 scripts/gitlab-map-check
> >  create mode 100755 scripts/gitlab-map-update
> >
> > diff --git a/.gitlab-map-auto b/.gitlab-map-auto
> > new file mode 100644
> > index 0000000000..defecb2c9f
> > --- /dev/null
> > +++ b/.gitlab-map-auto
> > @@ -0,0 +1,83 @@
> > +# This file is auto-generated by scripts/autolab-map-update
> > +#
> > +# This GitLab map associates GitLab account handles
> > +# with real names, in order to allow mapping from
> > +# MAINTAINERS entries. The format of entries is
> > +#
> > +#    {gitlab-handle}<tab>{real name}
> > +#
> > +# Manual overrides must be placed in .gitlab-map-manual
> > +a1xndr	Alexander Bulekov
> > +adi-g15-ibm	Aditya Gupta
> > +agraf	Alexander Graf
> > +alex.williamson	Alex Williamson
> > +aliang1	Aihua Liang
> > +alistair23	Alistair Francis
> > +anisinha	Ani Sinha
> > +anthony-linaro	Anthony Roberts
> > +berrange	Daniel P. Berrangé
> > +birkelund	Klaus Jensen
> > +bonzini	Paolo Bonzini
> > +bonzini	Paolo Bonzini
> > +brian-cain	Brian Cain
> > +bsdimp	Warner Losh
> > +cborntra	Christian Borntraeger
> > +cleber.gnu	Cleber Rosa
> > +clegoate	Cédric Le Goater
> > +cohuck	Cornelia Huck
> > +cota_	Emilio Cota
> > +dagrh	Dr. David Alan Gilbert
> > +danielhb	Daniel Henrique Barboza
> > +davidhildenbrand	David Hildenbrand
> > +dgibson	dgibson
> > +dwmw2	David Woodhouse
> > +ebblake	Eric Blake
> > +ehabkost	Eduardo Habkost
> > +eldondev	Eldon
> > +epilys	Manos Pitsidianakis
> > +famzheng	Fam Zheng
> > +farosas	Fabiano Rosas
> > +gkurz	Greg Kurz
> > +gusbromero	Gustavo Romero
> > +harshpb	Harsh Prateek Bora
> > +hdeller	Helge Deller
> > +hreitz	Hanna Czenczek
> > +imammedo	Igor Mammedov
> > +jasowang	Jason Wang
> > +jmacarthur	Jim MacArthur
> > +jsnow	John Snow
> > +juan.quintela	Juan Quintela
> > +kbastian-qemu	Bastian Koppelmann
> > +kmwolf	Kevin Wolf
> > +kostyanf14	Kostiantyn Kostiuk
> > +kraxel	Gerd Hoffmann
> > +lbmeng	Bin Meng
> > +legoater	Cédric Le Goater
> > +lvivier	Laurent Vivier
> > +marcandre.lureau	Marc-André Lureau
> > +marcandre.lureau-rh	Marc-André Lureau
> > +mcayland	Mark Cave-Ayland
> > +mdroth	Michael Roth
> > +mediouni-m	M. Mediouni
> > +mjt0k	Michael Tokarev
> > +mstredhat	MST
> > +npiggin	npiggin
> > +pauldzim	Paul Zimmerman
> > +philmd	Philippe Mathieu-Daudé
> > +philmd	Philippe Mathieu-Daudé
> > +pierrick.bouvier	Pierrick Bouvier
> > +pipo.sk	Peter Krempa
> > +pkrempa	Peter Krempa (work)
> > +pm215	Peter Maydell
> > +qemu-janitor	Qemu Janitor
> > +rth7680	Richard Henderson
> > +schoenebeck	Christian Schoenebeck
> > +sgarzarella	Stefano Garzarella
> > +stefanberger	Stefan Berger
> > +stefanha	Stefan Hajnoczi
> > +stefanha	Stefan Hajnoczi
> > +stsquad	Alex Bennée
> > +stweil	Stefan Weil
> > +thuth	Thomas Huth
> > +vsementsov	Vladimir Sementsov-Ogievskiy
> > +xcancerberox	Joaquin de Andres
> > diff --git a/.gitlab-map-manual b/.gitlab-map-manual
> > new file mode 100644
> > index 0000000000..7326971cdd
> > --- /dev/null
> > +++ b/.gitlab-map-manual
> > @@ -0,0 +1,18 @@
> > +# This GitLab map associates GitLab account handles
> > +# with real names, in order to allow mapping from
> > +# MAINTAINERS entries. The format of entries is
> > +#
> > +#    {gitlab-handle}<tab>{real name}
> > +#
> > +# This file is manually written, to augment the
> > +# auto-generated data in .gitlab-map-auto. This
> > +# needed where a GitLab account real name does
> > +# not exactly match the MAINTAINERS file real
> > +# name.
> > +#
> > +berrange	Daniel P. Berrange
> > +dgibson	David Gibson
> > +hreitz	Hanna Reitz 
> > +mstredhat	Michael S. Tsirkin
> > +npiggin	Nicholas Piggin
> > +mediouni-m	Mohamed Mediouni
> > diff --git a/scripts/gitlab-map-check b/scripts/gitlab-map-check
> > new file mode 100755
> > index 0000000000..69d5b8258a
> > --- /dev/null
> > +++ b/scripts/gitlab-map-check
> > @@ -0,0 +1,23 @@
> > +#!/bin/sh
> > +# SPDX-License-Identifier: GPL-2.0-or-later
> > +
> > +missing=0
> > +present=0
> > +
> > +grep -E '^(R|M):' MAINTAINERS | \
> > +sed -E -e 's/^(M|R): //' -e 's/ <.*//' | \
> > +sort | uniq > names.txt
> > +while IFS= read -r NAME
> > +do
> > +  grep "$NAME" .gitlab-map-{auto,manual} > /dev/null
> > +  if test $? != 0
> > +  then
> > +    echo "Missing GitLab handle: $NAME"
> > +    missing=$(($missing + 1))
> > +  else
> > +    present=$(($present + 1))
> > +  fi
> > +done < names.txt
> > +rm -f names.txt
> > +
> > +echo "GitLab handles missing: $missing / present: $present"
> > diff --git a/scripts/gitlab-map-update b/scripts/gitlab-map-update
> > new file mode 100755
> > index 0000000000..9fe07a98ee
> > --- /dev/null
> > +++ b/scripts/gitlab-map-update
> > @@ -0,0 +1,44 @@
> > +#!/bin/sh
> > +# SPDX-License-Identifier: GPL-2.0-or-later
> > +
> > +echo "Checking authentication token status"
> > +glab auth status
> > +
> > +if test $? != 0
> > +then
> > +  echo "ERROR: not authenticated with gitlab.com"
> > +  exit 1
> > +fi
> > +
> > +if ! test -f .gitlab-map-auto
> > +then
> > +  echo "ERROR: cannot find existing '.gitlab-map-auto file'"
> > +  echo "ERROR: this must be executed from the root of the"
> > +  echo "ERROR: git repository checkout"
> > +  exit 1
> > +fi
> > +
> > +fail=0
> > +echo "Updating member list from qemu-project"
> > +glab api --paginate /groups/qemu-project/members | \
> > +    jq -r -c '.[] | [.username, .name] | @tsv' | \
> > +    grep -v '^group_3038080_bot' > \
> > +    .gitlab-map-auto.tmp
> > +test $? != 0 && fail=1
> > +
> > +echo "Updating member list from qemu-project/qemu"
> > +glab api --paginate /projects/qemu-project%2fqemu/members | \
> > +    jq -r -c '.[] | [.username, .name] | @tsv' >> \
> > +    .gitlab-map-auto.tmp
> > +test $? != 0 && fail=1
> > +
> > +if test $fail == 0
> > +then
> > +  grep '^#' .gitlab-map-auto > .gitlab-map-auto.new
> > +  LC_ALL=C sort .gitlab-map-auto.tmp >> .gitlab-map-auto.new
> > +  mv .gitlab-map-auto.new .gitlab-map-auto
> > +  echo "OK: GitLab member list updated"
> > +else
> > +  echo "ERROR: Updating member list failed"
> > +fi
> > +rm -f .gitlab-map-auto.tmp
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles
  2026-06-24 13:19 ` [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Philippe Mathieu-Daudé
@ 2026-06-24 17:38   ` Daniel P. Berrangé
  0 siblings, 0 replies; 10+ messages in thread
From: Daniel P. Berrangé @ 2026-06-24 17:38 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: qemu-devel, Alex Bennée, Fabiano Rosas

On Wed, Jun 24, 2026 at 03:19:15PM +0200, Philippe Mathieu-Daudé wrote:
> On 24/6/26 14:29, Daniel P. Berrangé wrote:
> > When triaging GitLab issues, whether regular bugs or security
> > disclosures, we need to be able to assign suitable accounts.
> > 
> > We can only assign Git Lab handles for accounts that are members
> > of the QEMU group, or QEMU repository with the "Reporter" role
> > or higher.
> > 
> > Currently one needs to run 'get_maintainer.pl -f <file>' to get
> > the maintainer / reviewer names & emails, and then look in the
> > GitLab members page to see if there is a match.
> > 
> > This simplifies that by including the GitLab handle alongside
> > the email addresses:
> > 
> > The GitLab account handle -> real name mapping is stored in
> > separate files .gitlab-map-auto & .gitlab-map-manual to avoid
> > redundancy in the MAINTAINERS file. The former file is
> > auto-generated and catches 99% of the mappings, the latter is
> > for manual fixups.
> > 
> > With this series applied as is, we get the following stats
> > 
> > $ ./scripts/gitlab-map-check
> > Missing GitLab handle: Akihiko Odaki

...

> > Missing GitLab handle: zhenwei pi
> > Missing GitLab handle: Zhenzhong Duan
> > Missing GitLab handle: Zhuoying Cai
> > GitLab handles missing: 161 / present: 57
> > 
> > Plenty of those will have GitLab accounts, but are simply not members
> > of QEMU. Plenty more probably aren't registered with GitLab at all.
> > 
> > Short of emailing all of those people directly, I don't see a good
> > way to identify their GitLab accounts (if any), in order to invite
> > them to the QEMU project. I don't want to blindly invite accounts
> > which merely have the same name on GitLab as there's too much risk
> > of getting a mis-match.

...

> No clue why Hanna is listed here...
> 
> Applying: gitlab: introduce files mapping GitLab accounts to real names
> Applying: get_maintainer: add ability to report Git Lab handle
> .git/rebase-apply/patch:121: trailing whitespace.
> hreitz	Hanna Reitz
> warning: 1 line adds whitespace errors.

There is trailing whitespace after 'Reitz' that crept in.

> 
> Anyhow,
> Tested-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2026-06-24 17:41 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-24 12:29 [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Daniel P. Berrangé
2026-06-24 12:29 ` [PATCH v2 1/2] gitlab: introduce files mapping GitLab accounts to real names Daniel P. Berrangé
2026-06-24 13:09   ` Philippe Mathieu-Daudé
2026-06-24 13:11   ` Alex Bennée
2026-06-24 13:41   ` Fabiano Rosas
2026-06-24 16:43     ` Daniel P. Berrangé
2026-06-24 12:29 ` [PATCH v2 2/2] get_maintainer: add ability to report Git Lab handle Daniel P. Berrangé
2026-06-24 13:15   ` Alex Bennée
2026-06-24 13:19 ` [PATCH v2 0/2] Record maintainer/reviewer Git Lab handles Philippe Mathieu-Daudé
2026-06-24 17:38   ` Daniel P. Berrangé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.