unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (Debian-5.0)
Page:
Section:
Apropos / Subsearch:
optional field

CVS2CL(1)             User Contributed Perl Documentation            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 unam-
       biguous, 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 informa-
       tion 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 look-
       ing 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.

       -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/mail-
           name, 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.

       --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).

       -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.

       --xml-encoding ENCODING.
           Insert encoding clause 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 includ-
           ing 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:

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

       o   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.

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

                  jrandom:jrandomATred-bean.com

           or maybe even like this

                  jrandom:'Jesse Q. Random <jrandomATred-bean.com>'

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

       o   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).

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

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

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

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

       o   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 /cvs-
           root 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 "bug-cvs2clATred-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 <fluffyATcpan.org>, under the
       GNU GPL.

       (C) 1999 Karl Fogel <kfogelATred-bean.com>, 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 main-
       tainer to reflect the FSF's current address.]

SEE ALSO
       cvs(1)



perl v5.8.8                       2006-06-17                         CVS2CL(1)