[GEDI] [PATCH v4 06/31] python: add commit-per-subsystem.py

Cornelia Huck cohuck at redhat.com
Mon Oct 7 15:55:14 UTC 2019


On Tue,  1 Oct 2019 18:52:54 +0300
Vladimir Sementsov-Ogievskiy <vsementsov at virtuozzo.com> wrote:

> Add script to automatically commit tree-wide changes per-subsystem.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov at virtuozzo.com>
> ---
> 
> CC: kwolf at redhat.com
> CC: mreitz at redhat.com
> CC: jsnow at redhat.com
> CC: fam at euphon.net
> CC: sw at weilnetz.de
> CC: codyprime at gmail.com
> CC: marcandre.lureau at redhat.com
> CC: pbonzini at redhat.com
> CC: groug at kaod.org
> CC: sundeep.lkml at gmail.com
> CC: peter.maydell at linaro.org
> CC: stefanha at redhat.com
> CC: pburton at wavecomp.com
> CC: arikalo at wavecomp.com
> CC: berrange at redhat.com
> CC: ehabkost at redhat.com
> CC: david at gibson.dropbear.id.au
> CC: clg at kaod.org
> CC: mst at redhat.com
> CC: marcel.apfelbaum at gmail.com
> CC: mark.cave-ayland at ilande.co.uk
> CC: yuval.shaia at oracle.com
> CC: cohuck at redhat.com
> CC: farman at linux.ibm.com
> CC: rth at twiddle.net
> CC: david at redhat.com
> CC: pasic at linux.ibm.com
> CC: borntraeger at de.ibm.com
> CC: kraxel at redhat.com
> CC: alex.williamson at redhat.com
> CC: andrew at aj.id.au
> CC: joel at jms.id.au
> CC: eblake at redhat.com
> CC: armbru at redhat.com
> CC: mdroth at linux.vnet.ibm.com
> CC: quintela at redhat.com
> CC: dgilbert at redhat.com
> CC: jasowang at redhat.com
> CC: qemu-block at nongnu.org
> CC: integration at gluster.org
> CC: qemu-arm at nongnu.org
> CC: qemu-ppc at nongnu.org
> CC: qemu-s390x at nongnu.org
> 
> 
>  python/commit-per-subsystem.py | 69 ++++++++++++++++++++++++++++++++++
>  1 file changed, 69 insertions(+)
>  create mode 100755 python/commit-per-subsystem.py
> 
> diff --git a/python/commit-per-subsystem.py b/python/commit-per-subsystem.py
> new file mode 100755
> index 0000000000..d8442d9ea3
> --- /dev/null
> +++ b/python/commit-per-subsystem.py
> @@ -0,0 +1,69 @@
> +#!/usr/bin/env python3
> +#
> +# Copyright (c) 2019 Virtuozzo International GmbH
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +
> +import subprocess
> +import sys
> +
> +
> +def git_add(pattern):
> +    subprocess.run(['git', 'add', pattern])
> +
> +
> +def git_commit(msg):
> +    subprocess.run(['git', 'commit', '-m', msg], capture_output=True)
> +
> +
> +maintainers = sys.argv[1]
> +message = sys.argv[2].strip()
> +
> +subsystem = None
> +
> +shortnames = {
> +    'Block layer core': 'block',
> +    'ARM cores': 'arm',
> +    'Network Block Device (NBD)': 'nbd',
> +    'Command line option argument parsing': 'cmdline',
> +    'Character device backends': 'chardev',
> +    'S390 general architecture support': 's390'
> +}
> +
> +
> +def commit():
> +    if subsystem:
> +        msg = subsystem
> +        if msg in shortnames:
> +            msg = shortnames[msg]
> +        msg += ': ' + message
> +        git_commit(msg)
> +
> +
> +with open(maintainers) as f:
> +    for line in f:
> +        line = line.rstrip()
> +        if not line:
> +            continue
> +        if len(line) >= 2 and line[1] == ':':
> +            if line[0] == 'F' and line[3:] not in ['*', '*/']:
> +                git_add(line[3:])
> +        else:
> +            # new subsystem start
> +            commit()
> +
> +            subsystem = line
> +
> +commit()

Hm... I'm not sure about the purpose of this script (and my python is
rather weak)... is this supposed to collect all changes covered by a
subsystem F: pattern into one patch? If so, what happens to files
covered by multiple sections?


More information about the integration mailing list