mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-13 21:04:00 +00:00
Estimated hours taken: 0.25 Branches: main tools/summarize_cvslog: Strip unnecessary trailing newlines on the log message. This works around a problem with newer versions of cvs that seem to be adding an extra blank line at the end of the log message after each directory when the same log message is used for changes to more than one directory.
142 lines
4.1 KiB
Plaintext
Executable File
142 lines
4.1 KiB
Plaintext
Executable File
|
|
# Leave the first line of this file blank!
|
|
# This is a Perl script; the following two lines allow us to avoid
|
|
# embedding the path of the perl interpreter in the script.
|
|
eval "exec perl -S $0 $*"
|
|
if $running_under_some_shell;
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
# summarize_cvslog: A Perl script for summarizing CVS commitlog files.
|
|
#
|
|
# The commitlog for a set of changes gets generated with a different entry
|
|
# for each directory or branch changed.
|
|
# This script reads through the commitlog file, merging different
|
|
# entries with the same log message into a single combined entry.
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
$prev_invariant_part_1 = "";
|
|
$prev_invariant_part_2 = "";
|
|
$prev_invariant_part_3 = "";
|
|
$prev_invariant_part_4 = "";
|
|
$accumulate_variant_part_1 = "";
|
|
$accumulate_variant_part_2 = "";
|
|
$accumulate_variant_part_3 = "";
|
|
$accumulate_variant_part_4 = "";
|
|
|
|
$next_blank_line = <>;
|
|
$next_asterisk_line = <>;
|
|
|
|
while(<>) {
|
|
$blank_line = $next_blank_line;
|
|
$asterisk_line = $next_asterisk_line;
|
|
$date_line = $_;
|
|
$author_line = <>;
|
|
$blank_line_2 = <>;
|
|
$repository_line = <>;
|
|
$working_space_line = <>;
|
|
$blank_line_3 = <>;
|
|
|
|
$next = <>;
|
|
|
|
$modified_files = "";
|
|
until (!defined($next)
|
|
|| $next =~ /^Log Message:/
|
|
|| $next =~ /^File:/
|
|
|| $next =~ /^\*\*\*\*\*\*\*\*\*\*\*\*\*/)
|
|
{
|
|
$modified_files .= $next;
|
|
$next = <>;
|
|
}
|
|
|
|
$log_message = "";
|
|
until (!defined($next)
|
|
|| $next =~ /^File:/
|
|
|| $next =~ /^\*\*\*\*\*\*\*\*\*\*\*\*\*/)
|
|
{
|
|
$log_message .= $next;
|
|
$next = <>;
|
|
}
|
|
|
|
$files = "";
|
|
until (!defined($next)
|
|
|| $next =~ /^\*\*\*\*\*\*\*\*\*\*\*\*\*/)
|
|
{
|
|
$files .= $next;
|
|
$prev = $next;
|
|
$next = <>;
|
|
}
|
|
|
|
$next_blank_line = $prev;
|
|
$next_asterisk_line = $next;
|
|
|
|
$log_message =~ s/^Log Message:\n\n//;
|
|
$log_message =~ s/\n\n*$/\n\n/;
|
|
|
|
if (0) {
|
|
print "[[[DEBUG INFO]]]\n" .
|
|
"[[Date]]" . $date_line .
|
|
"[[author]]" . $author_line .
|
|
"[[blank]]" . $blank_line_2 .
|
|
"[[repository]]" . $repository_line .
|
|
"[[ws]]" . $working_space_line .
|
|
"[[blank]]" . $blank_line_3 .
|
|
"[[modified_files]]" . $modified_files .
|
|
"[[log]]" . $log_message .
|
|
"[[files]]" . $files .
|
|
"[[asterisk]]" . $asterisk_line .
|
|
"[[[END DEBUG INFO]]]\n";
|
|
}
|
|
|
|
$invariant_part_1 = $blank_line . $asterisk_line;
|
|
$variant_part_1 = $date_line;
|
|
$invariant_part_2 = $author_line . $blank_line_2;
|
|
$variant_part_2 = $repository_line . $working_space_line .
|
|
$modified_files;
|
|
$invariant_part_3 = $blank_line_3 . $log_message;
|
|
$variant_part_3 = $files;
|
|
$invariant_part_4 = "";
|
|
$variant_part_4 = "";
|
|
|
|
if ($invariant_part_1 ne $prev_invariant_part_1
|
|
|| $invariant_part_2 ne $prev_invariant_part_2
|
|
|| $invariant_part_3 ne $prev_invariant_part_3
|
|
|| $invariant_part_4 ne $prev_invariant_part_4)
|
|
{
|
|
if (0) {
|
|
if ($invariant_part_1 ne $prev_invariant_part_1) {
|
|
print "<<1>>";
|
|
}
|
|
if ($invariant_part_2 ne $prev_invariant_part_2) {
|
|
print "<<2>>";
|
|
}
|
|
if ($invariant_part_3 ne $prev_invariant_part_3) {
|
|
print "<<3>>";
|
|
}
|
|
if ($invariant_part_4 ne $prev_invariant_part_4) {
|
|
print "<<4>>";
|
|
}
|
|
}
|
|
print $prev_invariant_part_1 . $accumulate_variant_part_1 .
|
|
$prev_invariant_part_2 . $accumulate_variant_part_2 .
|
|
$prev_invariant_part_3 . $accumulate_variant_part_3 .
|
|
$prev_invariant_part_4 . $accumulate_variant_part_4;
|
|
$accumulate_variant_part_1 = "";
|
|
$accumulate_variant_part_2 = "";
|
|
$accumulate_variant_part_3 = "";
|
|
$accumulate_variant_part_4 = "";
|
|
$prev_invariant_part_1 = $invariant_part_1;
|
|
$prev_invariant_part_2 = $invariant_part_2;
|
|
$prev_invariant_part_3 = $invariant_part_3;
|
|
$prev_invariant_part_4 = $invariant_part_4;
|
|
}
|
|
$accumulate_variant_part_1 .= $variant_part_1;
|
|
$accumulate_variant_part_2 .= $variant_part_2;
|
|
$accumulate_variant_part_3 .= $variant_part_3;
|
|
$accumulate_variant_part_4 .= $variant_part_4;
|
|
}
|
|
|
|
print $prev_invariant_part_1 . $accumulate_variant_part_1 .
|
|
$prev_invariant_part_2 . $accumulate_variant_part_2 .
|
|
$prev_invariant_part_3 . $accumulate_variant_part_3 .
|
|
$prev_invariant_part_4 . $accumulate_variant_part_4;
|