X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=tools%2Fmkheaders;h=ae59857c624b082c0e5ae65bc9ded8878bd7feec;hb=e0dc7691c4cff3a38bc12adf10b3709d8c4901ba;hp=f7b1247daddfa53f30e0fc42a4ad986ab188f3fd;hpb=859a79923a1e9df7195e1320d66b61ee162f52cc;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/tools/mkheaders b/tools/mkheaders index f7b1247da..ae59857c6 100755 --- a/tools/mkheaders +++ b/tools/mkheaders @@ -2,7 +2,7 @@ # # InspIRCd -- Internet Relay Chat Daemon # -# Copyright (C) 2020 Sadie Powell +# Copyright (C) 2020-2021 Sadie Powell # # This file is part of InspIRCd. InspIRCd is free software: you can # redistribute it and/or modify it under the terms of the GNU General Public @@ -69,31 +69,28 @@ for my $path (@paths) { if (defined $copyright) { say console_format "Updating copyright headers in <|GREEN $path|>." if defined $ENV{MKHEADERS_VERBOSE}; - my (%author, %authors); + my (%authors, $commit, %commits); my $ignored_args = join ' ', map { "--ignore-rev $_" } @ignored_revisions; - for my $line (split /\n+/, `git blame $ignored_args --incremental -w HEAD -- $path`) { + for my $line (split /\n+/, `git blame $ignored_args --incremental -M -w HEAD -- $path`) { if ($line =~ /^([0-9a-f]{40})(?:\s\d+){3}$/) { - $author{COMMITS} //= []; - push @{$author{COMMITS}}, $1; + $commit = $1; + $commits{$commit} //= {}; } elsif ($line =~ /^author (.+)/) { - $author{NAME} = $1; + $commits{$commit}->{NAME} = $1; } elsif ($line =~ /^author-mail <(.+)>/) { - $author{EMAIL} = $1; + $commits{$commit}->{EMAIL} = $1; } elsif ($line =~ /^author-time (.+)/) { - $author{YEAR} = strftime '%Y', gmtime $1; + $commits{$commit}->{YEAR} = strftime '%Y', gmtime $1; } elsif ($line =~ /^filename /) { - next unless scalar keys %author > 1; - my $display = sprintf "%s <%s>", $author{NAME}, $author{EMAIL}; + my $display = sprintf "%s <%s>", $commits{$commit}->{NAME}, $commits{$commit}->{EMAIL}; $authors{$display} //= []; - push @{$authors{$display}}, $author{YEAR}; - for my $commit (uniq @{$author{COMMITS}}) { - my $details = `git rev-list --format=%B --max-count=1 $commit`; - while ($details =~ /co-authored-by: ([^<]+<[^>]+>)/gi) { - $authors{$1} //= []; - push @{$authors{$1}}, $author{YEAR}; - } + push @{$authors{$display}}, $commits{$commit}->{YEAR}; + my $details = `git rev-list --format=%B --max-count=1 $commit`; + while ($details =~ /co-authored-by: ([^<]+<[^>]+>)/gi) { + $authors{$1} //= []; + push @{$authors{$1}}, $commits{$commit}->{YEAR}; } - undef %author; + undef $commit; } }