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

Vladimir Sementsov-Ogievskiy vsementsov at virtuozzo.com
Tue Oct 1 15:52:54 UTC 2019

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
+# 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

More information about the integration mailing list