• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

cbtcommon/H02-Apr-2008-1,5251,068

CHANGELOGH A D02-Apr-200811.3 KiB272234

COPYINGH A D02-Apr-200817.6 KiB341281

MakefileH A D02-Apr-2008628 3630

READMEH A D02-Apr-20089.2 KiB232171

cache.cH A D02-Apr-200812.1 KiB529437

cache.hH A D02-Apr-2008232 135

cap.cH A D02-Apr-20083 KiB136105

cap.hH A D02-Apr-2008214 145

cvs_direct.cH A D02-Apr-200822.1 KiB931685

cvs_direct.hH A D02-Apr-2008884 2516

cvsps.1H A D02-Apr-20089 KiB206204

cvsps.cH A D03-May-202268.4 KiB2,6881,882

cvsps.hH A D02-Apr-20081 KiB3524

cvsps.specH A D02-Apr-20081.2 KiB4939

cvsps_types.hH A D02-Apr-20084.3 KiB17799

list_sort.cH A D02-Apr-20081.2 KiB8362

list_sort.hH A D02-Apr-2008297 145

merge_utils.shH A D02-Apr-20081.2 KiB5126

stats.cH A D02-Apr-20083.9 KiB142101

stats.hH A D02-Apr-2008210 124

util.cH A D02-Apr-20085.9 KiB319251

util.hH A D02-Apr-2008720 2919

README

1CVSps (c) 2001,2002,2003 David Mansfield
2------------------------------
3
4Overview.
5--------
6
7CVSps is a program for generating 'patchset' information from a CVS
8repository.  A patchset in this case is defined as a set of changes made
9to a collection of files, and all committed at the same time (using a
10single 'cvs commit' command).  This information is valuable to seeing the
11big picture of the evolution of a cvs project.  While cvs tracks revision
12information, it is often difficult to see what changes were committed
13'atomically' to the repository.
14
15Compiling.
16---------
17
18CVSps is a relatively small program, with only a few modules.
19The Makefile is very simple and should work in most GNU type environments.
20Unfortunately, I've only been able to test on Red Hat Linux, so YMMV.  As
21CVSps matures, I'm sure a more sophisticated build environment will evolve
22with it.  For now, just try 'make' and 'make install'.  If you have any
23problems let me know.
24
25Running.
26-------
27
28Note: not all options are necessarily discussed here.  Please check the
29output of 'cvsps -h' and/or the manual page for the most up-to-date info.
30
31CVSps operates by parsing the 'cvs log' output.  So to run it, you must
32be in the working directory of a cvs project.  CVSps handles
33subdirectories fine, so run it in the top directory of your project.
34
35a) the ~/.cvsps/cvsps.cache file (or so it's called)
36
37Because you may have a *lot* of revision history in your project, and/or
38your connection to the cvs server may be slow or congested, CVSps uses a
39cache file for most operations.  The first time you run CVSps, just issue:
40
41cvsps
42
43and will begin reading and parsing the cvs log.  When it is finished it
44will output all of the patchset information to stdout, and it will also
45generate the '~/.cvsps/cvsps.cache' file.  Note: for historical reasons
46this file is still called the cvsps.cache file, but in reality it is named
47based on the CVS/Root and CVS/Repository contents, and thus is shared for
48the same repository checked out in multiple places.
49
50If the cache file exists, it won't ever be automatically updated.  To
51update the cache with cvs activity that has occurred since the ~/.cvsps/cvsps.cache
52was last updated, use:
53
54cvsps -u
55
56If you question the integrity of the ~/.cvsps/cvsps.cache, or for some other reason
57want to force a full cache rebuild, use (you could also 'rm' the cache file):
58
59cvsps -x
60
61b) Reading the output.
62
63CVSps's output is information about patchsets.  A patchset looks like:
64
65---------------------
66PatchSet 999
67Date: 2002/07/11 19:50:46
68Author: alan
69Branch: HEAD
70Tag: (none)
71Log:
72[PATCH] Fix several pdc202xx problems
73
74Misnaming of 20270 as 20268R
75Failure of LBA48 on 20262
76Incorrect speed detection because the old driver used host not drive side
77cable detect
78PDC202xx handling for quirks in udma reporting off some drives
79LBA48 for PIO mode
80
81BKrev: 3d2dd386wJMnehoOAhv3wL991IfXVQ
82
83Members:
84  ChangeSet:1.999->1.1000
85  MAINTAINERS:1.74->1.75
86  drivers/ide/ide-features.c:1.4->1.5
87  drivers/ide/ide-pci.c:1.18->1.19
88  drivers/ide/pdc202xx.c:1.11->1.12
89  include/linux/pci_ids.h:1.44->1.45
90
91---------------------
92
93This patchset is taken from the linux kernel BK->CVS tree.  It shows the date,
94the author, log message and each file that was modified.  For each file the
95pre-commit and post-commit revisions are given.  You can also see (if
96applicable, not in this case) if the files are on a branch, as well as the
97tag (see TAGS below).
98
99Patchsets are ordered by commit timestamp, so as long as the clock on your
100cvs server is monotonic, the numbering of patchsets should be invariant
101across cache-rebuilds. (see COMPATIBILITY below).
102
103c) Limiting the patchset output.
104
105The default output of CVSps is to show all patchsets.  This can be
106filtered in one of many ways.  These flags can be combined to really
107limit the output to what you're interested in.
108
109By id.  With the -s <ps range> you can specify individual PatchSets by
110number or by range.  Ranges can be of the form '<number>', '<number>-',
111'-<number>' and of course '<number>-<number>'.  Multiple ranges can be
112specified seperated by commas.  E.g.
113
114cvsps -s 999-1020,1025,4956-
115
116By author.  With the -a <author> flag you limit the output to patchsets
117committed by a given author.  The author is usually the UNIX login id.
118
119By file.  With the -f <file regex> flag you limit the output to patchsets
120that have modified the given file.  Because a regular expression can have
121many pieces 'or'ed together, you can specify many different files here,
122for example (note also the use of the ^ character):
123
124cvsps -f '^net/ipv4|^net/core'
125
126By date.  With one date specification, CVSps shows only patchsets newer
127than the date given, and with two dates, it shows patchsets between the
128two dates.
129
130*NOTE ON DATE FORMAT*.  Because I'm lazy, only one date format is
131currently acceptable. 'YYYY/MM/DD HH:MM:SS'  where time is given as
132localtime, and HH is in 24 hour format.  NOTE ALSO that cvs tends to
133display times as GMT, but parse dates as localtime, so when using the '-D'
134with cvs you need to convert from GMT to localtime in your head.  CVSps is
135not as fancy.  It treats all dates as if in localtime, and therefore you
136give CVSps dates the same way it gives them to you.
137
138By branch.  With the -b <branch> flag you limit the output to patchsets
139that have modified the history of the given branch.  Note, this
140doesn't necessarily mean the commit itself was made on the branch, since
141the files in question may have existed prior to the branch point, in which
142case changes made to a given file before the branch point affect the file
143as it exists in the head of the branch.  If you want to restrict to the
144main branch, use a branch of 'HEAD'.
145
146By log comment.  With the -l <regex> flag you can limit the ouptut to
147patchsets with the commit message matching the regex.
148
149By tag.  With the -r <tag1> -r <tag2> you can limit the patchsets to
150commits after a given tag1 and, optionally, before tag2.
151
152d) viewing the changes made by a patchset.
153
154To show the 'diff' output for a given patchset, use -g.
155
156It will show you the diff of changes made by the selected commits.
157Some effort was made to ensure that the patches are valid, even in the
158case of removing or creating files, a case in which 'cvs diff' fails.
159The patches generated are, generally speaking, applyable in the working
160directory with the '-p1' option to the patch command.
161
162e) what is timestamp fuzz factor (-z option)?
163
164There's another annoying feature of cvs.  When you commit a large change,
165the timestamp on the change is created per file committed.  For example:
166if you commit changes to 60 files on a slow server, taking, say, 60
167seconds, the 'commit time' as given in the log message for the first file
168will differ from that of the last file by 60 seconds.
169
170The fuzz factor attempts to workaround this by saying: commits by the same
171author, using the same log message, within <fuzz> seconds are considered
172part of the same patchset.  The default fuzz is 300 seconds (5 minutes).
173
174TAGS
175----
176
177Please read the manual page.
178
179COMPATIBILITY
180-------------
181
182One of the main goals of cvsps was to make the patchset numbering stable across
183all time, as long as no funny-business is done to the repository files themselves.
184
185Unfortunately, as bugs have been fixed, the numbering has changed.  This is most
186regrettable, but unavoidable.
187
188Additionally, in version 2.0, two changes have been made which will 'renumber'
189the patch sets.
190
1911) The false 'globbing' of two commits from nearly the exact same time, by the
192same person, with the same log description but to different branches.  Now,
193these will be reported as 2 patchsets instead of one.
194
1952) The creation of a large volume of patchsets for 'file xyz was originally added on
196branch' log messages.  This occurs whenever a file is originally born on a branch,
197and is exacerbated by the fact that even when all of these files are created with
198a single commit, the 'file xyz...' messages, which contains the actual file name,
199are different, causing a proliferation of these unwanted patchsets.  These patchsets
200are now silently eliminated from the output.
201
202Reporting bugs / submitting patches.
203-----------------------------------
204
205Although the current version is perfect and bug free, you can still send
206bug reports, feature requests and patches to me at:
207
208cvsps@dm.cobite.com
209
210I will try to maintain CVSps and make releases regularly.  The most recent
211version of CVSps will always be available at http://www.cobite.com/cvsps
212
213Special thanks to my employer Cobite and Robert Lippman, who've given me
214time to develop this tool.
215
216Known Problems (this will become the FAQ if anyone ever A any Q).
217----------------------------------------------------------------
218
2191) What is the '*** file xyz doesn't match strip_path abc' error?
220
221This error occurs when one of the subdirectories of the directory you
222ran CVSps in is checked out from a different repository.  CVSps tries
223to remove the repository path information from the filenames that it
224gets to give you working-directory local pathnames.  It does this
225at startup by parsing the CVS/Root and CVS/Repository files.  If
226the contents of these two files is different for some subdirectory,
227all of the files in that subdirectory will be ignored.
228
229You can always run CVSps in that subdirectory, and since it IS a
230separate repository, that does make a little bit of sense.
231
232