Vegard Nossum wrote:
Hi, I've written this perl script that takes a patch as input and prints the authors/committers of the affected lines, using git-blame as the back end. (The purpose of this is of course to find out whom to send patches to.) There are some caveats: - If I've understood correctly, git-blame incremental output doesn't split commits when a newer one is found, so we currently possibly take into account more than just the last patch to touch a line. This might not be a disadvantage, however... - The patch must apply to the current working tree. I suppose there is some way to use the index information in the patch to determine what to run git-blame against, but this is currently beyond my git knowledge. - It's a bit slow, particularly for large files. But doing the same thing by hand would be slower, so I suppose it's an overall improvement. Running this on a random -mm patch, for example http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.26-rc2/2.6.26-rc2-mm1/broken-out/acpi-fix-fadt-parsing.patch gives the following output: $ perl whomto2.pl acpi-fix-fadt-parsing.patch Running git-blame on drivers/acpi/tables/tbfadt.c... To: (Committers) 48 Len Brown <len.brown@xxxxxxxxx> Cc: (Authors) 44 Bob Moore <robert.moore@xxxxxxxxx> 2 Alexey Starikovskiy <alexey.y.starikovskiy@xxxxxxxxxxxxxxx> 2 Len Brown <len.brown@xxxxxxxxx> Maybe this tool can be useful? :-) (Improvements are of course also welcome.)
Minor fix: do not git-blame /dev/null in patches that add new files. -Andrea diff -urpN linux/whomto.orig.pl linux/whomto.pl --- linux/whomto.orig.pl 2008-05-30 09:43:08.000000000 +0200 +++ linux/whomto.pl 2008-05-30 09:49:26.000000000 +0200 @@ -101,6 +101,7 @@ sub parse_patch { for (@p) { if (m/^--- .*?\/([^\s~]*)/) { + next if ($1 eq 'dev/null'); $file = $files{$1} = { chunks => [], }; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html