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

Vladimir Sementsov-Ogievskiy vsementsov at virtuozzo.com
Mon Oct 7 16:10:02 UTC 2019


07.10.2019 18:55, Cornelia Huck wrote:
> 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?

Yes

> If so, what happens to files
> covered by multiple sections?
> 

Hmm, they just go to the first of these sections, mentioned in MAINTAINERS.
Is it bad I don't know, but I tried to automate it somehow. Anyway, I myself
can't have better idea about how to organize patches to the subsystems which
I don't know.

-- 
Best regards,
Vladimir


More information about the integration mailing list