07.10.2019 18:55, Cornelia Huck wrote: > On Tue, 1 Oct 2019 18:52:54 +0300 > Vladimir Sementsov-Ogievskiy <[email protected]> wrote: > >> Add script to automatically commit tree-wide changes per-subsystem. >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> >> --- >> >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> CC: [email protected] >> >> >> 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
