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

EXAMPLES

250       Some examples (working on UNIX shells):
251
252             # logs after 6th March, 2003 (inclusive)
253             cvs2cl -l "-d'>2003-03-06'"
254             # logs after 4:34PM 6th March, 2003 (inclusive)
255             cvs2cl -l "-d'>2003-03-06 16:34'"
256             # logs between 4:46PM 6th March, 2003 (exclusive) and
257             # 4:34PM 6th March, 2003 (inclusive)
258             cvs2cl -l "-d'2003-03-06 16:46>2003-03-06 16:34'"
259
260       Some examples (on non-UNIX shells):
261
262             # Reported to work on windows xp/2000
263             cvs2cl -l  "-d"">2003-10-18;today<"""
264

AUTHORS

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

BUGS

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

PREREQUISITES

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

OPERATING SYSTEM COMPATIBILITY

311       Should work on any OS.
312

SCRIPT CATEGORIES

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

SEE ALSO

337       cvs(1)
338
339
340
3412.73                              2021-07-21                         CVS2CL(1)
Impressum