cvs2cl(1)

NAME

   cvs2cl - convert cvs log messages to changelogs

SYNOPSIS

   cvs2cl [options] [FILE1 [FILE2 ...]]

DESCRIPTION

   cvs2cl produces a GNU-style ChangeLog for CVS-controlled sources by
   running "cvs log" and parsing the output. Duplicate log messages get
   unified in the Right Way.

   The default output of cvs2cl is designed to be compact, formally
   unambiguous, but still easy for humans to read.  It should be largely
   self-explanatory; the one abbreviation that might not be obvious is
   "utags".  That stands for "universal tags" -- a universal tag is one
   held by all the files in a given change entry.

   If you need output that's easy for a program to parse, use the --xml
   option.  Note that with XML output, just about all available
   information is included with each change entry, whether you asked for
   it or not, on the theory that your parser can ignore anything it's not
   looking for.

   If filenames are given as arguments cvs2cl only shows log information
   for the named files.

OPTIONS

   -h, -help, --help, -?
       Show a short help and exit.

   --version
       Show version and exit.

   -r, --revisions
       Show revision numbers in output.

   -b, --branches
       Show branch names in revisions when possible.

   -t, --tags
       Show tags (symbolic names) in output.

   -T, --tagdates
       Show tags in output on their first occurance.

   --show-dead
       Show dead files.

   --stdin
       Read from stdin, don't run cvs log.

   --stdout
       Output to stdout not to ChangeLog.

   -d, --distributed
       Put ChangeLogs in subdirs.

   -f FILE, --file FILE
       Write to FILE instead of ChangeLog.

   --fsf
       Use this if log data is in FSF ChangeLog style.

   --FSF
       Attempt strict FSF-standard compatible output (incompatible with
       --accum).

   -W SECS, --window SECS
       Window of time within which log entries unify.

   -U UFILE, --usermap UFILE
       Expand usernames to email addresses from UFILE.

   --passwd PASSWORDFILE
       Use system passwd file for user name expansion.  If no mail domain
       is provided (via --domain), it tries to read one from
       /etc/mailname, output of hostname -d, dnsdomainname, or domain-
       name.  cvs2cl exits with an error if none of those options is
       successful. Use a domain of '' to prevent the addition of a mail
       domain.

   --domain DOMAIN
       Domain to build email addresses from.

   --gecos
       Get user information from GECOS data.

   -R REGEXP, --regexp REGEXP
       Include only entries that match REGEXP.  This option may be used
       multiple times.

   -I REGEXP, --ignore REGEXP
       Ignore files whose names match REGEXP.  This option may be used
       multiple times.  The regexp is a perl regular expression.  It is
       matched as is; you may want to prefix with a ^ or suffix with a $
       to anchor the match.

   -C, --case-insensitive
       Any regexp matching is done case-insensitively.

   -F BRANCH, --follow BRANCH
       Show only revisions on or ancestral to BRANCH.

   --follow-only BRANCH
       Like --follow, but sub-branches are not followed.

   --no-ancestors
       When using -F, only track changes since the BRANCH started.

   --no-hide-branch-additions
       By default, entries generated by cvs for a file added on a branch
       (a dead 1.1 entry) are not shown.  This flag reverses that action.

   -S, --separate-header
       Blank line between each header and log message.

   --group-within-date
       Group ChangeLog entries on the same date together, instead of
       having a separate entry for each commit on that date.

   --summary
       Add CVS change summary information.

   --no-wrap
       Don't auto-wrap log message (recommend -S also).

   --no-indent
       Don't indent log message

   --gmt, --utc
       Show times in GMT/UTC instead of local time.

   --accum
       Add to an existing ChangeLog (incompatible with --xml and --FSF).

   -w, --day-of-week
       Show day of week.

   --no-times
       Don't show times in output.

   --chrono
       Output log in chronological order (default is reverse chronological
       order).

   --header FILE
       Get ChangeLog header from FILE ("-" means stdin).

   --xml
       Output XML instead of ChangeLog format (incompatible with --accum).

   --xml-encoding ENCODING
       Insert encoding clause in XML header.

   --xml-stylesheet FILE
       Insert xml-stylesheet processing instruction with FILE formatting
       stylesheet file path in XML header.

   --noxmlns
       Don't include xmlns= attribute in root element.

   --hide-filenames
       Don't show filenames (ignored for XML output).

   --no-common-dir
       Don't shorten directory names from filenames.

   --rcs CVSROOT
       Handle filenames from raw RCS, for instance those produced by "cvs
       rlog" output, stripping the prefix CVSROOT.

   -P, --prune
       Don't show empty log messages.

   --lines-modified
       Output the number of lines added and the number of lines removed
       for each checkin (if applicable). At the moment, this only affects
       the XML output mode.

   --ignore-tag TAG
       Ignore individual changes that are associated with a given tag.
       May be repeated, if so, changes that are associated with any of the
       given tags are ignored.

   --show-tag TAG
       Log only individual changes that are associated with a given tag.
       May be repeated, if so, changes that are associated with any of the
       given tags are logged.

   --delta FROM_TAG:TO_TAG
       Attempt a delta between two tags (since FROM_TAG up to and
       including TO_TAG).  The algorithm is a simple date-based one (this
       is a hard problem) so results are imperfect.

   -g OPTS, --global-opts OPTS
       Pass OPTS to cvs like in "cvs OPTS log ...".

   -l OPTS, --log-opts OPTS
       Pass OPTS to cvs log like in "cvs ... log OPTS".

   Notes about the options and arguments:

   *   The -I and -F options may appear multiple times.

   *   To follow trunk revisions, use "-F trunk" ("-F TRUNK" also works).
       This is okay because no would ever, ever be crazy enough to name a
       branch "trunk", right?  Right.

   *   For the -U option, the UFILE should be formatted like
       CVSROOT/users. That is, each line of UFILE looks like this:

              jrandom:[email protected]

       or maybe even like this

              jrandom:'Jesse Q. Random <[email protected]>'

       Don't forget to quote the portion after the colon if necessary.

   *   Many people want to filter by date.  To do so, invoke cvs2cl like
       this:

              cvs2cl -l "-d'DATESPEC'"

       where DATESPEC is any date specification valid for "cvs log -d".
       (Note that CVS 1.10.7 and below requires there be no space between
       -d and its argument).

   *   Dates/times are interpreted in the local time zone.

   *   Remember to quote the argument to `-l' so that your shell doesn't
       interpret spaces as argument separators.

   *   See the 'Common Options' section of the cvs manual ('info cvs' on
       UNIX-like systems) for more information.

   *   Note that the rules for quoting under windows shells are different.

   *   To run in an automated environment such as CGI or PHP, suidperl may
       be needed in order to execute as the correct user to enable
       /cvsroot read lock files to be written for the 'cvs log' command.
       This is likely just a case of changing the /usr/bin/perl command to
       /usr/bin/suidperl, and explicitly declaring the PATH variable.

EXAMPLES

   Some examples (working on UNIX shells):

         # logs after 6th March, 2003 (inclusive)
         cvs2cl -l "-d'>2003-03-06'"
         # logs after 4:34PM 6th March, 2003 (inclusive)
         cvs2cl -l "-d'>2003-03-06 16:34'"
         # logs between 4:46PM 6th March, 2003 (exclusive) and
         # 4:34PM 6th March, 2003 (inclusive)
         cvs2cl -l "-d'2003-03-06 16:46>2003-03-06 16:34'"

   Some examples (on non-UNIX shells):

         # Reported to work on windows xp/2000
         cvs2cl -l  "-d"">2003-10-18;today<"""

AUTHORS

   Karl Fogel
   Melissa O'Neill
   Martyn J. Pearce

   Contributions from

   Mike Ayers
   Tim Bradshaw
   Richard Broberg
   Nathan Bryant
   Oswald Buddenhagen
   Neil Conway
   Arthur de Jong
   Mark W. Eichin
   Dave Elcock
   Reid Ellis
   Simon Josefsson
   Robin Hugh Johnson
   Terry Kane
   Pete Kempf
   Akos Kiss
   Claus Klein
   Eddie Kohler
   Richard Laager
   Kevin Lilly
   Karl-Heinz Marbaise
   Mitsuaki Masuhara
   Henrik Nordstrom
   Joe Orton
   Peter Palfrader
   Thomas Parmelan
   Jordan Russell
   Jacek Sliwerski
   Johannes Stezenbach
   Joseph Walton
   Ernie Zapata

BUGS

   Please report bugs to "cvs2cl-reports {_AT_} red-bean.com".

PREREQUISITES

   This script requires "Text::Wrap", "Time::Local", and "File::Basename".
   It also seems to require "Perl 5.004_04" or higher.

OPERATING SYSTEM COMPATIBILITY

   Should work on any OS.

SCRIPT CATEGORIES

   Version_Control/CVS

COPYRIGHT

   (C) 2001,2002,2003,2004 Martyn J. Pearce, under the GNU GPL.

   (C) 1999 Karl Fogel, under the GNU GPL.

   cvs2cl is free software; you can redistribute it and/or modify it under
   the terms of the GNU General Public License as published by the Free
   Software Foundation; either version 2, or (at your option) any later
   version.

   cvs2cl is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   for more details.

   You may have received a copy of the GNU General Public License along
   with cvs2cl; see the file COPYING.  If not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
   USA.

   [The postal address above has been updated by the Debian package
   maintainer to reflect the FSF's current address.]

SEE ALSO

   cvs(1)



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.