Newer
Older
<title>cvs2cl.pl</title>
<body bgcolor="FFFFFF" fgcolor="000000">
<center>
<h1>cvs2cl.pl: A script for converting CVS log messages to
ChangeLog files.</h1>
<center><i>The latest version is <strong>2.71</strong>, released 17
May, 2008.</i></center>
<p>
<div style="color: red; background-color: yellow;">
NOTICE: Martyn Pearce has had to step down after a long and very
successful stint as cvs2cl's maintainer (thanks, Martyn!). As a
result, cvs2cl is now looking for a new maintainer. If interested,
please mail
<code>bug-cvs2cl at red-bean dot com</code>.</div>
<h2>Overview</h2>
<p>
<b>cvs2cl</b> is Perl script that does what you think it does: it
produces a <a href="changelogs.html">GNU-style ChangeLog</a> for
CVS-controlled sources, by running "cvs log" and parsing the output.
Duplicate log messages get unified in the Right Way. If you don't know
what any of that means, then you're doing fine, just keep on truckin'
(i.e., hit the Back button on your browser).
</p>
<p>
A bug status page for cvs2cl may be found <a href="BUGS.html">here</a>
</p>
<p>
Otherwise, you can <a href="cvs2cl.pl">download the latest version</a>
of the script, or get it via CVS thusly:
</p>
<pre>
cvs -d :pserver:anonymous@cvs.red-bean.com:/usr/local/cvs co cvs2cl
</pre>
<p>
Note that by using <code>perldoc</code>, you can review a full manpage
for cvs2cl:
<p><code>perldoc cvs2cl.pl</code></p>
</p>
If you have a bug to report, please mail it to <font
color="blue"><code>bug-cvs2cl at red-bean dot com</code></font>,
including the command-line you executed, what you expected to happen,
how what you got differed from this, and a small output of cvs log that
may be used to recreate the problem. A patch to fix the issue is
especially welcome.
<b>cvs2cl</b> is capable of producing XML output.
<p>David Carlson (<font color="blue"><code>davidwcarlson at hotmail dot
com</code></font>) has come up with a draft <a href="changelog.dtd">dtd</a>
and <a href="changelog-xml-schema.xdr">schema</a> for cvs2cl's XML output.
<p><a href="cl2html-ciaglia.xslt">Here's</a> an XSL stylesheet kindly
donated by Daniel Ciaglia (<font color="blue"><code>daniel at ciaglia dot
de</code></font>), that's a variant on the html XSLT below, with the
following amendments:
<ul><li>DOCTYPE changed to HTML 4.01;</li>
<li>removed the xmlns:cvs2cl definition</li>
<li>switched encoding to iso-8859-1</li>
</ul>
Example output from this stylesheet may be seen <a
href="ieee1394-cl.html">here</a> Daniel also contributed a <a
href="cl2any-ciaglia.bash">bash script</a> to use with XSLT
transformations.
</p>
<p><a href="cvs2cl_ruether.xslt">Here's</a> a development of Daniel's
stylesheet kindly donated by Alexander Ruether that features:
<ul>
<li>Colored headlines</li>
<li>Convert linefeeds to <br></li>
<li>via javascript you can show/hide the concerned files</li>
</ul>
</p>
<p><a href="filter-cvs2cl.xslt">Here's</a> an XSL stylesheet kindly
donated by Joseph Walton (<font color="blue"><code>joe at kafsemo dot
org</code></font>) that generates RSS output from changelogs in XML mode
(requires 2.51 for the isoDate patch).</p>
<p><a href="cl2html_rss-karaguezian.xslt">Here's</a> an XSL stylesheet
that kind donator Nicolas Karageuzian (<font color="blue"><code>nicolas at
karageuzian dot com</code></font>) describes as "quick and dirty", that
generates rss and html using a table with colour changing for files</p>
<p><a href="cl2html.xslt">Here's</a> a simple xslt (1.0) example for
converting the XML output to XHTML. It really is a very simple example,
for I am no expert: it's just a starting point. If anybody else has a
nicer application to share, please send it to the bug address, and I'll
post it here.</p>
<p><a href="ChangeLog.xs">Here's</a> an XSD, kindly donated by Yury
Lebedev (<font color="blue"><code>yurylebedev at mail dot
ru</code></font>), that can translate cvs2cl.pl's XML output into DataSet
from MS dotNet Framework or can be used to validate/transform XML output
data types in DOM document. Instead of XDR, this XSD can be used 'as is'
without any modification of XML output - it's necessary only attach this
XSD as separate 'schema' for 'http://www.red-bean.com/xmlns/cvs2cl/'
namespace before loading such XML into a DOM document (depending on used
XML parser implementation).
</p>
<h2>Recent Developments</h2>
<li><i>Monday, 23rd April 2007:</i><p>2.62 released, with several
bugfixes:
<ul>
<li>One by Gary Duzan to tolerate dot when matching tag names.</li>
<li>One by Alexey Panchenko to support Windows output paths
better.</li>
<li>Another by Alexey Panchenko to call subprocesses on Windows
correctly.</li>
</ul>
</p>
</li>
<li><i>Wednesday, 17th May 2005:</i><p>2.59 released, with one
bugfix.</p></li>
<li><i>Sunday, 7th Novemmber 2004:</i><p>2.58 released, with several
bugfixes</p></li>
<li><i>Saturday, 10th July 2004:</i><p>2.57 released, with several
bugfixes; most notably to handle the date output from the new cvs 1.12.9
server.</p></li>
<li><i>Saturday, 15th May 2004:</i><p>2.54 released, with a couple of
new features. An XSLT donated by Alexander Ruether was also added.</p>
</li>
<li><i>Sunday, 7th March 2004:</i><p>2.53 released, a bugfix
release</p>
<li><i>Saturday, 6th March 2004:</i><p>Added XSLT donated by Nicolas
Karageuzian</p>
</li>
<li><i>Tuesday, 20th January 2004:</i><p>The structure of cvs2cl has
been significantly altered with the release of 2.52, introducing a
number of classes (all still within the one file), into which the major
subroutines have been placed.</p>
</li>
<li><i>Monday, 5th January 2004:</i> <p>Integrated Peter Palfrader's
manpage (<a
href="https://cvs.noreply.org/cgi-bin/viewcvs.cgi/cvs2cl/debian/cvs2cl.1?view=markup">original</a>)
into the POD for cvs2cl.</p>
</li>
<li><i>Tuesday, 9th December 2003:</i>
<p>2.51 released. A new set of bug fixes, and a couple of minor
features.</p>
</li>
<li><i>Wednesday, 26th November 2003:</i>
<p><a href="filter-cvs2cl.xslt">Here's</a> an XSL stylesheet kindly
donated by Joseph Walton (<font color="blue"><code>joe at kafsemo
dotorg</code></font>) generates RSS output from changelogs in XML mode
(requires 2.51 for the isoDate patch).</p>
</li>
<li><i>Monday, 25th August 2003:</i>
<p>2.50 released. A new set of bug fixes, and a couple of minor
features.</p>
</li>
<li><i>Sunday, 24th August 2003:</i>
<p><a href="cl2html.xslt">Here's</a>
a simple xslt (1.0) example for converting the XML output to
HTML. It really is a very simple example, for I am no expert: it's
just a starting point. If anybody else has a nicer application to
share, please send it to the bug address, and I'll post it here.</p>
</li>
<p>2.49 released. A new set of bug fixes, and an improvement to the
<p>2.48 released. A stack of bugs have been fixed, and new features
<p>A number of bugs have recently been fixed, and a new <a
href="BUGS.html">bugs-status page</a> has been created</p>
</li>
<li><i>Thursday, 23rd May 2002:</i> <p>Martyn J. Pearce is the new
maintainer of cvs2cl. This site remains cvs2cl's home site, and bug
reports, patches, suggestions & pizza coupons should still be sent to
the <font color="blue"><code>bug-cvs2cl at red-bean dot
com</code></font></a> mailing list.</p>
<p>David Carlson (<font color="blue"><code>davidwcarlson at hotmail
dot com</code></font>) has come up with a draft <a
href="changelog.dtd">dtd</a> and <a
href="changelog-xml-schema.xdr">schema</a> for cvs2cl's XML output.
<h2>Examples</h2>
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
Here is cvs2cl.pl generating several flavors of its own ChangeLog.
<p>
<center>
<font size="small">
<i>Note that all of these invocations also used the "<tt>--fsf</tt>"
option (omitted below for brevity), because a few log entries were
written in FSF-style as an experiment.</i>
</font>
</center>
<p>
<center>
<table border=0>
<tr>
<td align=top>1.</td>
<td><a href="ChangeLog-basic.txt">
<tt>cvs2cl.pl</tt></a></td>
</tr>
<tr>
<td align=top>2.</td>
<td><a href="ChangeLog-xml.txt">
<tt>cvs2cl.pl --xml</tt></a></td>
</tr>
<tr>
<td align=top>3.</td>
<td><a href="ChangeLog-revs.txt">
<tt>cvs2cl.pl --revisions</tt></a></td>
</tr>
<tr>
<td align=top>4.</td>
<td><a href="ChangeLog-tags.txt">
<tt>cvs2cl.pl --tags</tt></a></td>
</tr>
<tr>
<td align=top>5.</td>
<td><a href="ChangeLog-branches.txt">
<tt>cvs2cl.pl --branches</tt></a></td>
</tr>
<tr>
<td align=top>6.</td>
<td><a href="ChangeLog-tags-revs.txt">
<tt>cvs2cl.pl --tags --revisions</tt></a></td>
</tr>
<tr>
<td align=top>7.</td>
<td><a href="ChangeLog-branches-revs.txt">
<tt>cvs2cl.pl --branches --revisions</tt></a></td>
</tr>
<tr>
<td align=top>8.</td>
<td><a href="ChangeLog-tags-branches.txt">
<tt>cvs2cl.pl --tags --branches</tt></a></td>
</tr>
<tr>
<td align=top>9.</td>
<td><a href="ChangeLog-tags-branches-revs.txt">
<tt>cvs2cl.pl --tags --branches --revisions
</tt></a></td>
</tr>
<tr>
<td align=top>10.</td>
<td><a href="ChangeLog-the-works.txt">
<tt>cvs2cl.pl --tags --branches --revisions --usermap $CVSROOT/CVSROOT/users --day-of-week</tt></a></td>
</tr>
</table>
</center>
<p>
Running <tt>cvs2cl.pl --help</tt> will get you a thorough
<a href="cvs2cl-usage.txt">usage message</a>, too.
<p>
<hr>
<h2>Links</h2>
Here are some links to related resources:
<li><a href="http://www.cvshome.org/">The CVS Homepage</a></li>
<li><a href="http://www.sslug.dk/cvs2html">cvs2html</a>
cvs2html is a program which converts CVS log data to HTML. It
apparently organizes the data by file rather than by commit, which may
be less or more useful than cvs2cl depending on your needs.
<li><a href="http://www.cobite.com/cvsps/">CVSps</a>
CVSps is a program for generating 'patchset' information from a CVS
repository. A patchset in this case is defined as a set of changes
made to a collection of files, and all committed at the same time
(using a single 'cvs commit' command). This information is valuable to
seeing the big picture of the evolution of a cvs project. While cvs
tracks revision information, it is often difficult to see what changes
were committed 'atomically' to the repository.
<li><a href="filter-cvs2cl.xslt">filter-cvs2cl.xslt</a>
This is an XSL stylesheet kindly donated by Joseph Walton (<font
color="blue"><code>joe at kafsemo dotorg</code></font>) generates RSS
output from changelogs in XML mode (requires 2.51 for the isoDate
patch).
</li>
<li><a href="cl2html.xslt">cl2html.xslt</a>
This is a simple xslt file as a starting point for converting the XML
output of <code>cvs2cl.pl</code> to HTML. It really is just an
example, and a pretty tatty one at that. If you enhance it, or have
other examples of xslt for <code>cvs2cl.pl</code> (or, come to that,
Enhanced DTD/Schema/RelaxNG, etc. for the cvs2cl.pl XML output), and
are willing to share, please mail them to the bugs address, and they
too will be posted here!
<li><a href="http://josefsson.org/cl2html/">cl2html.pl</a>
<b>cl2html.pl</b> converts the XML outputted by cvs2cl.pl's
C<--xml> option to HTML or XHTML code.
This is essentially similar to the XSLT above, but done in perl
instead. Suitable for the more dromedarian among us.
</li>
<li><a href="http://www-106.ibm.com/developerworks/web/library/us-gentoo4/?dwzone=web;">cvs2cl.pl used for the gentoo.org website</a>
"You'll remember that in Part 2 of this series I mentioned that the
cvs2cl.pl CVS Changelog generation script (see Resources) could
produce XML output and that I wanted to eventually use this feature as
the basis for a daily CVS Changelog page that would appear on the new
Web site. Now, with the new XML backend in place, adding the new
Changelog page is a piece of cake. Here's an enhanced version of the
cvslog.sh script that also takes care of handling the XML-to-HTML
conversion:"
</li>
<h2>Summarized Change History</h2>
<center>
<table border=3>
<tr>
<td>2.58</td>
<td>
<ul>
<li><a href="BUGS/detail.html#_50">#50</a> Correct sense of
--no-ancestors</li>
<li><a href="BUGS/detail.html#_79">#79</a> Fix non-working
--prune</li>
<li><a href="BUGS/detail.html#_80">#80</a> Fix use of quotes
in shell interpolation (that is, exec directly rather than
using the shell).</li>
<li><a href="BUGS/detail.html#_81">#81</a> Fix implementation
of --ignore to match documentation (i.e., use regexen).</li>
<li><a href="BUGS/detail.html#_82">#82</a> Fix implementation
of branch recognition to handle branches with 10+ members.</li>
<li><a href="BUGS/detail.html#_83">#83</a> Add tag dates to XML
output.</li>
</ul>
</td>
</tr>
<td>
<ul>
<li><a href="BUGS/detail.html#_75">#75</a> Add patch to allow
correct date format reading under cvs 1.12.9</li>
<li><a href="BUGS/detail.html#_19">#19</a> Fix regression of
handling carriage returns with windows cvs log</li>
<li><a href="BUGS/detail.html#_76">#76</a> Fix missing use of
File::Basename in ChangeLog::FileEntry</li>
<li><a href="BUGS/detail.html#_77">#77</a> Fix gecos handling
to read getpwnam correctly</li>
</ul>
</td>
</tr>
<tr>
<td>2.55</td>
<td>
New features:
<ul>
<li><a href="BUGS/detail.html#_73">#73</a> Add --lines-modified
option</li>
<li><a href="BUGS/detail.html#_74">#74</a> Add --follow-only
option</li>
</ul>
</td>
</tr>
<tr>
<td>2.53</td>
<td>
Bug fixes:
<ul>
<li><a href="BUGS/detail.html#_71">#71</a> (provide non-zero
exit code if cvs log fails)</li>
<li><a href="BUGS/detail.html#_70">#70</a> (eliminate
unitialized value warnings with --follow)</li>
<li><a href="BUGS/detail.html#_69">#69</a> (fix --gecos to cope
if author is missing, or if gecos field lacks commas)</li>
<li><a href="BUGS/detail.html#_68">#68</a> (fix -t -b to not die
with a bad array dereference)</li>
<li><a href="BUGS/detail.html#_65">#65</a> (formatting fixes for
pod)</li>
</ul>
</td>
</tr>
<tr>
<td>2.52</td>
<td>
New features:
<ul>
<li>Factor out a number of classes to ease maintenance and
clarify data-flow</li>
<li><a href="BUGS/detail.html#_65">#65</a> (Reformat/Rewrite POD
to form a valid manpage)</li>
</ul>
Bug fixes:
<ul>
<li><a href="BUGS/detail.html#_66">#66</a> (make --no-indent
to not indent with --hide-filenames & --no-wrap)</li>
</ul>
</td>
</tr>
<tr>
<td>2.51</td>
<td>
New features:
<ul>
<li><a href="BUGS/detail.html#_64">#64</a> (Add --no-indent
option)</li>
<li><a href="BUGS/detail.html#_60">#60</a> (Add ISO date to XML
output)</li>
</ul>
Bug fixes:
<ul>
<li><a href="BUGS/detail.html#_61">#61</a> (Add examples of
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
date use)</li>
<li><a href="BUGS/detail.html#_63">#63</a> (Partial
implementation of group-within-date)</li>
<li><a href="BUGS/detail.html#_56">#56</a> (avoid uninitialized
value warnings with --gecos)</li>
<li>Fix --FSF to not indent extra spaces</li>
<li><a href="BUGS/detail.html#_57">#57</a> (remove Attic/ path
from --rcs output (to match non-rcs output))</li>
<li><a href="BUGS/detail.html#_57">#59</a> (handle files with a
space in their name that were added on a branch)</li>
</ul>
</td>
</tr>
<tr>
<td>2.50</td>
<td>
New features:
<ul>
<li>Sort tags on output to ensure determinism to assist in tests
(and other change-check mechanisms).</li>
<li><a href="BUGS/detail.html#_52">#52</a> (Add --noxmlns
option)</li>
<li><a href="BUGS/detail.html#_49">#49</a> (Interpret
"[user@]host:/file/whatever" in -U option)</li>
</ul>
Bug fixes:
<ul>
<li>Undocument --update since it doesn't actually do anything
useful.</li>
<li><a href="BUGS/detail.html#_51">#51</a> (Remove additional
newline from msg in XML mode)</li>
<li><a href="BUGS/detail.html#_46">#46</a> (Better wrapping of
filenames with --no-wrap)</li>
</ul>
Implementation Changes:
<ul>
<li>Change 'wrap' to 'mywrap' because Text::Wrap in perl
5.005_03 exports wrap unconditionally and generates an override
warning </li>
</ul>
</td>
</tr>
<tr>
<td>2.49</td>
<td>
New features:
<ul>
<li><a href="BUGS/detail.html#_47">#47</a> (Don't show log
entries for branch-file addition)</li>
<li><a href="BUGS/detail.html#_46">#46</a> (Cosmetic Improvement
to Indenting)</li>
<li><a href="BUGS/detail.html#_45">#45</a> (Fix awkward wrapping
on two-space sentence gap)</li>
<li><a href="BUGS/detail.html#_44">#44</a> (Remove end-of-line
whitespace being generated)</li>
<li><a href="BUGS/detail.html#_43">#43</a> (Conflate
--mailname/--domain)</li>
<li><a href="BUGS/detail.html#_42">#42</a> (document --chrono
flag)</li>
<li><a href="BUGS/detail.html#_41">#41</a> (Recognize RCS File
on Windoze boxen)</li>
<li><a href="BUGS/detail.html#_3">#3</a> (Stop re-adding same
logs with --accum --utc)</li>
</ul>
</td>
</tr>
<tr>
<td>2.48</td>
<td>
<ul>
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
<li><a href="BUGS/detail.html#_40">#40</a> (Add --summary option
to summarize groups in terms of added, deleted & changed
files)</li>
<li><a href="BUGS/detail.html#_39">#39</a> (Add --update option
to list only files that have changed since last run) <a
href="BUGS/detail.html#_38">#38</a></li>
<li>(Add --no-ancestors option to track only changes since a
branch began)</li>
<li><a href="BUGS/detail.html#_37">#37</a> (Add --show-dead
option to record dead files in output)</li>
<li><a href="BUGS/detail.html#_36">#36</a> (Add --rcs option to
read raw rcs files)</li>
<li><a href="BUGS/detail.html#_35">#35</a> (Add --passwd option
to read details from passwd file)</li>
<li><a href="BUGS/detail.html#_35">#35</a> (Add --mailname
option to specify mail domain)</li>
</ul>
</td>
</tr>
<tr>
<td>2.47</td>
<td>
New features:
<ul>
<li> <a href="BUGS/detail.html#_33">#33</a> (Document --delta
flag)</li>
<li><a href="BUGS/detail.html#_32">#32</a> (Add --gecos,
--domain options to include email & gecos informatin)</li>
<li><a href="BUGS/detail.html#_29">#29</a> (Add --FSF option to
default output to FSF style) </li>
<li><a href="BUGS/detail.html#_28">#28</a> (Add --no-common-dir
option to disable common-directory clustering in file
output)</li>
<li><a href="BUGS/detail.html#_26">#26</a> (Add --show-tag
option as opposite of --ignore-tag)</li>
<li><a href="BUGS/detail.html#_25">#25</a> (Add --chrono option
to write output in chronological order)</li>
</td>
</tr>
<tr>
<td>2.46</td>
<td>New feature
<ul>
<li><a href="BUGS/detail.html#_24">#24</a>
(Option to not print HH:MM on timestamps)</li>
</ul>
</td>
</tr>
<tr>
<td>2.45</td>
<td>Fixes to bugs
<ul>
<li><a href="BUGS/detail.html#_19">#19</a>
(carriage returns wreak havoc on windoze)</li>
<li><a href="BUGS/detail.html#_22">#22</a>
(extra square brackets appeared on revision numbers)</li>
<li><a href="BUGS/detail.html#_23">#23</a>
(perl version hardwired)</li>
</ul>
</td>
</tr>
<tr>
<td>2.44</td>
<td>Fix to bug
<ul><li><a href="BUGS/detail.html#_18">#18</a>
(spurious `malformed utf-8 character' warnings emitted)</li>
</ul>
</td>
</tr>
<tr>
<td>2.43</td>
<td>Fixes to bugs
<ul>
<li><a href="BUGS/detail.html#_14">#14</a>
(conflict with --accum and -D)</li>
<li><a href="BUGS/detail.html#_11">#11</a>
(log tags with date the first tag occurred)</li>
</ul>
</td>
</tr>
<tr>
<td>2.42</td>
<td>Fix to bug
<ul>
<li><a href="BUGS/detail.html#_8">#8</a>
(delta option for trimming log between two tags)</li>
</ul>
</td>
</tr>
<tr>
<td>2.41</td>
<td>Fix to bug
<ul>
<li><a href="BUGS/detail.html#_5">#5</a>
(-W fails to handle argument '0') </li>
</ul>
</td>
</tr>
</table>
<p>
<hr>
<p>
<h2>Authors & Contributors</h2>
<h4>Authors</h4>
<ul>
<li>Karl Fogel</li>
<li>Melissa O'Neill</li>
<li>Martyn J. Pearce</li>
</ul>
<h4>Contributors</h4>
<ul>
<li>Mike Ayers</li>
<li>Tim Bradshaw</li>
<li>Richard Broberg</li>
<li>Nathan Bryant</li>
<li>Oswald Buddenhagen</li>
<li>Arthur de Jong</li>
<li>Anne Dudfield</li>
<li>Mark W. Eichin</li>
<li>Dave Elcock</li>
<li>Reid Ellis</li>
<li>Simon Josefsson</li>
<li>Robin Hugh Johnson</li>
<li>Terry Kane</li>
<li>Akos Kiss</li>
<li>Claus Klein</li>
<li>Eddie Kohler</li>
<li>Richard Laager</li>
<li>Kevin Lilly</li>
<li>Karl-Heinz Marbaise</li>
<li>Mitsuaki Masuhara</li>
<li>Henrik Nordstrom</li>
<li>Joe Orton</li>
<li>Peter Palfrader</li>
<li>Jordan Russell</li>
<li>Jacek Sliwerski</li>
<li>Joseph Walton</li>
<li>Ernie Zapata</li>
</ul>
<p>
<hr>
<p>
<center>
<a href="http://www.red-bean.com/">
<img src="http://www.red-bean.com/bean-brought.jpg"
alt="brought to you by red-bean"
size="150x58"> </img>
</a>
</center>