CVSUtils
view release on metacpan or search on metacpan
running "cvs log" and parsing the output. Shared log entries are
unified in an intuitive way.
=head1 DESCRIPTION
This script generates GNU-style ChangeLog files from CVS log
information. Basic usage: just run it inside a working copy and a
ChangeLog will appear. It requires repository access (i.e., 'cvs log'
must work). Run "cvs2cl.pl --help" to see more advanced options.
See http://www.red-bean.com/cvs2cl for updates, and for instructions
on getting anonymous CVS access to this script.
Maintainer: Karl Fogel <kfogel@red-bean.com>
Please report bugs to <bug-cvs2cl@red-bean.com>.
=head1 README
This script generates GNU-style ChangeLog files from CVS log
information. Basic usage: just run it inside a working copy and a
ChangeLog will appear. It requires repository access (i.e., 'cvs log'
must work). Run "cvs2cl.pl --help" to see more advanced options.
See http://www.red-bean.com/cvs2cl for updates, and for instructions
on getting anonymous CVS access to this script.
Maintainer: Karl Fogel <kfogel@red-bean.com>
Please report bugs to <bug-cvs2cl@red-bean.com>.
=head1 PREREQUISITES
This script requires C<Text::Wrap>, C<Time::Local>, and
C<File::Basename>.
It also seems to require C<Perl 5.004_04> or higher.
=pod OSNAMES
any
=pod SCRIPT CATEGORIES
Version_Control/CVS
=cut
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
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...
( run in 0.881 second using v1.01-cache-2.11-cpan-71847e10f99 )