LEOCHARRE-Dev
view release on metacpan or search on metacpan
#
# So, we parse the output of `cvs log', storing log messages in a
# multilevel hash that stores the mapping:
# directory => author => time => message => filelist
# As we go, we notice "nearby" commit times and store them together
# (i.e., under the same timestamp), so they appear in the same log
# entry.
#
# When we've read all the logs, we twist this mapping into
# a time => author => message => filelist mapping for each directory.
#
# If we're not using the `--distributed' flag, the directory is always
# considered to be `./', even as descend into subdirectories.
# Call Tree
# name number of lines (10.xii.03)
# parse_options 192
# derive_changelog 13
# +-maybe_grab_accumulation_date 38
# +-read_changelog 277
# +-maybe_read_user_map_file 94
# +-run_ext 9
# +-read_file_path 29
# +-read_symbolic_name 43
# +-read_revision 49
# +-read_date_author_and_state 25
# +-parse_date_author_and_state 20
# +-read_branches 36
# +-output_changelog 424
# +-pretty_file_list 290
# +-common_path_prefix 35
# +-preprocess_msg_text 30
# +-min 1
# +-mywrap 16
# +-last_line_len 5
# +-wrap_log_entry 177
#
# Utilities
#
# xml_escape 6
# slurp_file 11
# debug 5
# version 2
# usage 142
# -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
#
# Note about a bug-slash-opportunity:
# -----------------------------------
#
# There's a bug in Text::Wrap, which affects cvs2cl. This script
# reveals it:
#
# #!/usr/bin/perl -w
#
# use Text::Wrap;
#
# my $test_text =
# "This script demonstrates a bug in Text::Wrap. The very long line
# following this paragraph will be relocated relative to the surrounding
# text:
#
# ====================================================================
#
# See? When the bug happens, we'll get the line of equal signs below
# this paragraph, even though it should be above.";
#
#
# # Print out the test text with no wrapping:
# print "$test_text";
# print "\n";
# print "\n";
#
# # Now print it out wrapped, and see the bug:
# print wrap ("\t", " ", "$test_text");
# print "\n";
# print "\n";
#
# If the line of equal signs were one shorter, then the bug doesn't
# happen. Interesting.
#
# Anyway, rather than fix this in Text::Wrap, we might as well write a
# new wrap() which has the following much-needed features:
#
# * initial indentation, like current Text::Wrap()
# * subsequent line indentation, like current Text::Wrap()
# * user chooses among: force-break long words, leave them alone, or die()?
# * preserve existing indentation: chopped chunks from an indented line
# are indented by same (like this line, not counting the asterisk!)
# * optional list of things to preserve on line starts, default ">"
#
# Note that the last two are essentially the same concept, so unify in
# implementation and give a good interface to controlling them.
#
# And how about:
#
# Optionally, when encounter a line pre-indented by same as previous
# line, then strip the newline and refill, but indent by the same.
# Yeah...
# Globals --------------------------------------------------------------------
# In case we have to print it out:
my $VERSION = '$Revision: 1.1 $';
$VERSION =~ s/\S+\s+(\S+)\s+\S+/$1/;
## Vars set by options:
# Print debugging messages?
my $Debug = 0;
# Just show version and exit?
my $Print_Version = 0;
# Just print usage message and exit?
my $Print_Usage = 0;
# What file should we generate (defaults to "ChangeLog")?
my $Log_File_Name = "ChangeLog";
( run in 1.218 second using v1.01-cache-2.11-cpan-71847e10f99 )