On Wed, Jun 24, 2026 at 10:41:13AM -0300, Fabiano Rosas wrote:
> Daniel P. Berrangé <[email protected]> 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é <[email protected]>
> > ---
> >  .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 :|


Reply via email to