OnWorks favicon

cvs2cl - Online in the Cloud

Run cvs2cl in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command cvs2cl that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator



cvs2cl - convert cvs log messages to changelogs


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


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.


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

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

Read from stdin, don't run cvs log.

Output to stdout not to ChangeLog.

-d, --distributed
Put ChangeLogs in subdirs.

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

Use this if log data is in FSF ChangeLog style.

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.

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.

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.

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

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 ChangeLog entries on the same date together, instead of having a separate entry
for each commit on that date.

Add CVS change summary information.

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

Don't indent log message

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

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

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

Don't show times in output.

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

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

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.

Don't include xmlns= attribute in root element.

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

Don't shorten directory names from filenames.

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.

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.

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

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


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


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

Use cvs2cl online using onworks.net services

Free Servers & Workstations

Download Windows & Linux apps

  • 1
    Strikr Free Software project. Artifacts
    released under a 'intent based'
    dual license: AGPLv3 (community) and
    CC-BY-NC-ND 4.0 international
    Download strikr
  • 3
    giflib is a library for reading and
    writing gif images. It is API and ABI
    compatible with libungif which was in
    wide use while the LZW compression
    algorithm was...
    Download GIFLIB
  • 4
    Alt-F provides a free and open source
    alternative firmware for the DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F has Samba and NFS;
    supports ext2/3/4...
    Download Alt-F
  • 5
    Usm is a unified slackware package
    manager that handles automatic
    dependency resolution. It unifies
    various package repositories including
    slackware, slacky, p...
    Download usm
  • 6
    Chart.js is a Javascript library that
    allows designers and developers to draw
    all kinds of charts using the HTML5
    canvas element. Chart js offers a great
    array ...
    Download Chart.js
  • More »

Linux commands

  • 1
    a2j - Wrapper script to simulate
    a2jmidid's non-DBUS behaviour though
    a2jmidid actually being in DBUS mode ...
    Run a2j
  • 2
    a2jmidid - JACK MIDI daemon for ALSA
    MIDI ...
    Run a2jmidid
  • 3
    corebird - Native Gtk+ Twitter client
    for the Linux desktop. ...
    Run corebird
  • 4
    coredumpctl - Retrieve coredumps from
    the journal ...
    Run coredumpctl
  • 5
    ganyremote - GTK+ frontend for
    anyRemote ...
    Run ganyremotex
  • 6
    GAP - Groups, Algorithms and
    Programming DESCRIPTION: GAP is a system
    for computational discrete algebra with
    particular emphasis on computational
    group theory...
    Run gap
  • More »