On Mon, Nov 23, 2020 at 4:52 PM Jani Nikula jani.nikula@linux.intel.com wrote:
On Sat, 21 Nov 2020, James Bottomley James.Bottomley@HansenPartnership.com wrote:
On Sat, 2020-11-21 at 08:50 -0800, trix@redhat.com wrote:
A difficult part of automating commits is composing the subsystem preamble in the commit log. For the ongoing effort of a fixer producing one or two fixes a release the use of 'treewide:' does not seem appropriate.
It would be better if the normal prefix was used. Unfortunately normal is not consistent across the tree.
D: Commit subsystem prefix
ex/ for FPGA DFL DRIVERS
D: fpga: dfl:
I've got to bet this is going to cause more issues than it solves.
Agreed.
Tom, this a problem only kernel janitors encounter; all other developers really do not have that issue. The time spent on creating the patch is much larger than the amount saved if the commit log header line prefix would be derived automatically. I believe Julia Lawall, Arnd Bergmann and Nathan Chancellor as long-term high-frequency janitors do have already scripted approaches to that issue. Maybe they simply need to share these scripts with you and you consolidate them and share with everyone?
Also, making clean-up patches cumbersome has a positive side as well; maintainers are not swamped with fully automated patch submissions. There have been some bad experiences with some submitters on that in the past...
SCSI uses scsi: <driver>: for drivers but not every driver has a MAINTAINERS entry. We use either scsi: or scsi: core: for mid layer things, but we're not consistent. Block uses blk-<something>: for all of it's stuff but almost no <somtehing>s have a MAINTAINERS entry. So the next thing you're going to cause is an explosion of suggested MAINTAINERs entries.
On the one hand, adoption of new MAINTAINERS entries has been really slow. Look at B, C, or P, for instance. On the other hand, if this were to get adopted, you'll potentially get conflicting prefixes for patches touching multiple files. Then what?
I'm guessing a script looking at git log could come up with better suggestions for prefixes via popularity contest than manually maintained MAINTAINERS entries. It might not always get it right, but then human outsiders aren't going to always get it right either.
Now you'll only need Someone(tm) to write the script. ;)
Something quick like this:
git log --since={1year} --pretty=format:%s -- <FILES> |\ grep -v "^(Merge|Revert)" |\ sed 's/:[^:]*$//' |\ sort | uniq -c | sort -rn | head -5
already gives me results that really aren't worse than some of the prefixes invented by drive-by contributors.
I agree I do not see the need to introduce something in MAINTAINERS; from my observations maintaining MAINTAINERS, there is sufficient work on adoption and maintenance of the existing entries already without such an yet another additional entry. Some entries are outdated or wrong and the janitor task of cleaning those up is already enough work for involved janitors and enough churn for involved maintainers. So a machine-learned approach as above is probably good enough, but if you think you need more complex rules try to learn them from the data at hand... certainly a nice task to do with machine learning on commit message prefixes.
Lukas