1CVS2CL(1)       CVS-log-message-to-ChangeLog conversion script       CVS2CL(1)
2
3
4

NAME

6       cvs2cl - convert cvs log messages to changelogs
7

SYNOPSIS

9       cvs2cl [options] [FILE1 [FILE2 ...]]
10

DESCRIPTION

12       cvs2cl produces a GNU-style ChangeLog for CVS-controlled sources by
13       running "cvs log" and parsing the output. Duplicate log messages get
14       unified in the Right Way.
15
16       The default output of cvs2cl is designed to be compact, formally unam‐
17       biguous, but still easy for humans to read.  It should be largely
18       self-explanatory; the one abbreviation that might not be obvious is
19       "utags".  That stands for "universal tags" -- a universal tag is one
20       held by all the files in a given change entry.
21
22       If you need output that's easy for a program to parse, use the --xml
23       option.  Note that with XML output, just about all available informa‐
24       tion is included with each change entry, whether you asked for it or
25       not, on the theory that your parser can ignore anything it's not look‐
26       ing for.
27
28       If filenames are given as arguments cvs2cl only shows log information
29       for the named files.
30

OPTIONS

32       -h, -help, --help, -?
33           Show a short help and exit.
34
35       --version
36           Show version and exit.
37
38       -r, --revisions
39           Show revision numbers in output.
40
41       -b, --branches
42           Show branch names in revisions when possible.
43
44       -t, --tags
45           Show tags (symbolic names) in output.
46
47       -T, --tagdates
48           Show tags in output on their first occurance.
49
50       --show-dead
51           Show dead files.
52
53       --stdin
54           Read from stdin, don't run cvs log.
55
56       --stdout
57           Output to stdout not to ChangeLog.
58
59       -d, --distributed
60           Put ChangeLogs in subdirs.
61
62       -f FILE, --file FILE
63           Write to FILE instead of ChangeLog.
64
65       --fsf
66           Use this if log data is in FSF ChangeLog style.
67
68       --FSF
69           Attempt strict FSF-standard compatible output.
70
71       -W SECS, --window SECS
72           Window of time within which log entries unify.
73
74       -U UFILE, --usermap UFILE
75           Expand usernames to email addresses from UFILE.
76
77       --passwd PASSWORDFILE
78           Use system passwd file for user name expansion.  If no mail domain
79           is provided (via --domain), it tries to read one from /etc/mail‐
80           name, output of hostname -d, dnsdomainname, or domain-name.  cvs2cl
81           exits with an error if none of those options is successful. Use a
82           domain of '' to prevent the addition of a mail domain.
83
84       --domain DOMAIN
85           Domain to build email addresses from.
86
87       --gecos
88           Get user information from GECOS data.
89
90       -R REGEXP, --regexp REGEXP
91           Include only entries that match REGEXP.  This option may be used
92           multiple times.
93
94       -I REGEXP, --ignore REGEXP
95           Ignore files whose names match REGEXP.  This option may be used
96           multiple times.  The regexp is a perl regular expression.  It is
97           matched as is; you may want to prefix with a ^ or suffix with a $
98           to anchor the match.
99
100       -C, --case-insensitive
101           Any regexp matching is done case-insensitively.
102
103       -F BRANCH, --follow BRANCH
104           Show only revisions on or ancestral to BRANCH.
105
106       --follow-only BRANCH
107           Like --follow, but sub-branches are not followed.
108
109       --no-ancestors
110           When using -F, only track changes since the BRANCH started.
111
112       --no-hide-branch-additions
113           By default, entries generated by cvs for a file added on a branch
114           (a dead 1.1 entry) are not shown.  This flag reverses that action.
115
116       -S, --separate-header
117           Blank line between each header and log message.
118
119       --summary
120           Add CVS change summary information.
121
122       --no-wrap
123           Don't auto-wrap log message (recommend -S also).
124
125       --no-indent
126           Don't indent log message
127
128       --gmt, --utc
129           Show times in GMT/UTC instead of local time.
130
131       --accum
132           Add to an existing ChangeLog (incompatible with --xml).
133
134       -w, --day-of-week
135           Show day of week.
136
137       --no-times
138           Don't show times in output.
139
140       --chrono
141           Output log in chronological order (default is reverse chronological
142           order).
143
144       --header FILE
145           Get ChangeLog header from FILE ("-" means stdin).
146
147       --xml
148           Output XML instead of ChangeLog format.
149
150       --xml-encoding ENCODING.
151           Insert encoding clause in XML header.
152
153       --noxmlns
154           Don't include xmlns= attribute in root element.
155
156       --hide-filenames
157           Don't show filenames (ignored for XML output).
158
159       --no-common-dir
160           Don't shorten directory names from filenames.
161
162       --rcs CVSROOT
163           Handle filenames from raw RCS, for instance those produced by "cvs
164           rlog" output, stripping the prefix CVSROOT.
165
166       -P, --prune
167           Don't show empty log messages.
168
169       --lines-modified
170           Output the number of lines added and the number of lines removed
171           for each checkin (if applicable). At the moment, this only affects
172           the XML output mode.
173
174       --ignore-tag TAG
175           Ignore individual changes that are associated with a given tag.
176           May be repeated, if so, changes that are associated with any of the
177           given tags are ignored.
178
179       --show-tag TAG
180           Log only individual changes that are associated with a given tag.
181           May be repeated, if so, changes that are associated with any of the
182           given tags are logged.
183
184       --delta FROM_TAG:TO_TAG
185           Attempt a delta between two tags (since FROM_TAG up to and includ‐
186           ing TO_TAG).  The algorithm is a simple date-based one (this is a
187           hard problem) so results are imperfect.
188
189       -g OPTS, --global-opts OPTS
190           Pass OPTS to cvs like in "cvs OPTS log ...".
191
192       -l OPTS, --log-opts OPTS
193           Pass OPTS to cvs log like in "cvs ... log OPTS".
194
195       Notes about the options and arguments:
196
197       ·   The -I and -F options may appear multiple times.
198
199       ·   To follow trunk revisions, use "-F trunk" ("-F TRUNK" also works).
200           This is okay because no would ever, ever be crazy enough to name a
201           branch "trunk", right?  Right.
202
203       ·   For the -U option, the UFILE should be formatted like CVS‐
204           ROOT/users. That is, each line of UFILE looks like this:
205
206                  jrandom:jrandom@red-bean.com
207
208           or maybe even like this
209
210                  jrandom:'Jesse Q. Random <jrandom@red-bean.com>'
211
212           Don't forget to quote the portion after the colon if necessary.
213
214       ·   Many people want to filter by date.  To do so, invoke cvs2cl like
215           this:
216
217                  cvs2cl -l "-d'DATESPEC'"
218
219           where DATESPEC is any date specification valid for "cvs log -d".
220           (Note that CVS 1.10.7 and below requires there be no space between
221           -d and its argument).
222
223       ·   Dates/times are interpreted in the local time zone.
224
225       ·   Remember to quote the argument to `-l' so that your shell doesn't
226           interpret spaces as argument separators.
227
228       ·   See the 'Common Options' section of the cvs manual ('info cvs' on
229           UNIX-like systems) for more information.
230
231       ·   Note that the rules for quoting under windows shells are different.
232
233       ·   To run in an automated environment such as CGI or PHP, suidperl may
234           be needed in order to execute as the correct user to enable /cvs‐
235           root read lock files to be written for the 'cvs log' command.  This
236           is likely just a case of changing the /usr/bin/perl command to
237           /usr/bin/suidperl, and explicitly declaring the PATH variable.
238

EXAMPLES

240       Some examples (working on UNIX shells):
241
242             # logs after 6th March, 2003 (inclusive)
243             cvs2cl -l "-d'>2003-03-06'"
244             # logs after 4:34PM 6th March, 2003 (inclusive)
245             cvs2cl -l "-d'>2003-03-06 16:34'"
246             # logs between 4:46PM 6th March, 2003 (exclusive) and
247             # 4:34PM 6th March, 2003 (inclusive)
248             cvs2cl -l "-d'2003-03-06 16:46>2003-03-06 16:34'"
249
250       Some examples (on non-UNIX shells):
251
252             # Reported to work on windows xp/2000
253             cvs2cl -l  "-d"">2003-10-18;today<"""
254

AUTHORS

256       Karl Fogel
257       Melissa O'Neill
258       Martyn J. Pearce
259
260       Contributions from
261
262       Mike Ayers
263       Tim Bradshaw
264       Richard Broberg
265       Nathan Bryant
266       Oswald Buddenhagen
267       Neil Conway
268       Arthur de Jong
269       Mark W. Eichin
270       Dave Elcock
271       Reid Ellis
272       Simon Josefsson
273       Robin Hugh Johnson
274       Terry Kane
275       Pete Kempf
276       Akos Kiss
277       Claus Klein
278       Eddie Kohler
279       Richard Laager
280       Kevin Lilly
281       Karl-Heinz Marbaise
282       Mitsuaki Masuhara
283       Henrik Nordstrom
284       Joe Orton
285       Peter Palfrader
286       Thomas Parmelan
287       Jordan Russell
288       Jacek Sliwerski
289       Johannes Stezenbach
290       Joseph Walton
291       Ernie Zapata
292

BUGS

294       Please report bugs to "bug-cvs2cl@red-bean.com".
295

PREREQUISITES

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

OPERATING SYSTEM COMPATIBILITY

301       Should work on any OS.
302

SCRIPT CATEGORIES

304       Version_Control/CVS
305
307       (C) 2001,2002,2003,2004 Martyn J. Pearce <fluffy@cpan.org>, under the
308       GNU GPL.
309
310       (C) 1999 Karl Fogel <kfogel@red-bean.com>, under the GNU GPL.
311
312       cvs2cl is free software; you can redistribute it and/or modify it under
313       the terms of the GNU General Public License as published by the Free
314       Software Foundation; either version 2, or (at your option) any later
315       version.
316
317       cvs2cl is distributed in the hope that it will be useful, but WITHOUT
318       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
319       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
320       for more details.
321
322       You may have received a copy of the GNU General Public License along
323       with cvs2cl; see the file COPYING.  If not, write to the Free Software
324       Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
325       USA.
326

SEE ALSO

328       cvs(1)
329
330
331
3322.62                              2007-04-24                         CVS2CL(1)
Impressum