18
CVSps is a simple program, all in one .c file, with a few utility modules.
18
CVSps is a relatively small program, with only a few modules.
19
19
The Makefile is very simple and should work in most GNU type environments.
20
20
Unfortunately, I've only been able to test on Red Hat Linux, so YMMV. As
21
21
CVSps matures, I'm sure a more sophisticated build environment will evolve
22
with it. For now, just try 'make' and 'make install'.
22
with it. For now, just try 'make' and 'make install'. If you have any
28
Note: not all options are necessarily discussed here. Please check the
29
output of 'cvsps -h' and/or the manual page for the most up-to-date info.
27
31
CVSps operates by parsing the 'cvs log' output. So to run it, you must
28
32
be in the working directory of a cvs project. CVSps handles
29
33
subdirectories fine, so run it in the top directory of your project.
31
a) the CVS/cvsps.cache file
35
a) the ~/.cvsps/cvsps.cache file (or so it's called)
33
37
Because you may have a *lot* of revision history in your project, and/or
34
38
your connection to the cvs server may be slow or congested, CVSps uses a
39
43
and will begin reading and parsing the cvs log. When it is finished it
40
44
will output all of the patchset information to stdout, and it will also
41
generate the 'CVS/cvsps.cache' file.
45
generate the '~/.cvsps/cvsps.cache' file. Note: for historical reasons
46
this file is still called the cvsps.cache file, but in reality it is named
47
based on the CVS/Root and CVS/Repository contents, and thus is shared for
48
the same repository checked out in multiple places.
43
50
If the cache file exists, it won't ever be automatically updated. To
44
update the cache with cvs activity that has occurred since the CVS/cvsps.cache
51
update the cache with cvs activity that has occurred since the ~/.cvsps/cvsps.cache
45
52
was last updated, use:
49
If you question the integrity of the CVS/cvsps.cache, or for some other reason
50
want to force a full cache rebuild, use (you could alse 'rm' the cache):
56
If you question the integrity of the ~/.cvsps/cvsps.cache, or for some other reason
57
want to force a full cache rebuild, use (you could also 'rm' the cache file):
56
63
CVSps's output is information about patchsets. A patchset looks like:
58
65
---------------------
60
Date: 2001/11/06 19:49:04
67
Date: 2002/07/11 19:50:46
63
this release completes line summary find
66
Makefile:1.3.4.9->1.3.4.10 [v4_1-production-patches]
67
apache_mod/lineSummary.C:1.66.2.2->1.66.2.3 [v4_1-production-patches]
68
apache_mod/tbill_sql.C:1.59.2.5->1.59.2.6 [v4_1-production-patches]
72
[PATCH] Fix several pdc202xx problems
74
Misnaming of 20270 as 20268R
75
Failure of LBA48 on 20262
76
Incorrect speed detection because the old driver used host not drive side
78
PDC202xx handling for quirks in udma reporting off some drives
81
BKrev: 3d2dd386wJMnehoOAhv3wL991IfXVQ
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
70
91
---------------------
72
This patchset is taken from an internal project. It shows the date, the
73
author, log message and each file that was modified. For each file the
74
pre-commit and post-commit revisions are given. In this case, you can see
75
that the files are on a branch, and the branch tag is shown (for each
76
file) inside square brackets.
93
This patchset is taken from the linux kernel BK->CVS tree. It shows the date,
94
the author, log message and each file that was modified. For each file the
95
pre-commit and post-commit revisions are given. You can also see (if
96
applicable, not in this case) if the files are on a branch, as well as the
78
99
Patchsets are ordered by commit timestamp, so as long as the clock on your
79
100
cvs server is monotonic, the numbering of patchsets should be invariant
80
across cache-rebuilds.
101
across cache-rebuilds. (see COMPATIBILITY below).
82
103
c) Limiting the patchset output.
85
106
filtered in one of many ways. These flags can be combined to really
86
107
limit the output to what you're interested in.
109
By id. With the -s <ps range> you can specify individual PatchSets by
110
number or by range. Ranges can be of the form '<number>', '<number>-',
111
'-<number>' and of course '<number>-<number>'. Multiple ranges can be
112
specified seperated by commas. E.g.
114
cvsps -s 999-1020,1025,4956-
88
116
By author. With the -a <author> flag you limit the output to patchsets
89
117
committed by a given author. The author is usually the UNIX login id.
91
By file. With the -f <file> flag you limit the output to patchsets that
92
have modified the given file. File is given as the BASENAME of the file,
93
not the entire path. (I think!)
119
By file. With the -f <file regex> flag you limit the output to patchsets
120
that have modified the given file. Because a regular expression can have
121
many pieces 'or'ed together, you can specify many different files here,
122
for example (note also the use of the ^ character):
124
cvsps -f '^net/ipv4|^net/core'
95
126
By date. With one date specification, CVSps shows only patchsets newer
96
127
than the date given, and with two dates, it shows patchsets between the
110
141
the files in question may have existed prior to the branch point, in which
111
142
case changes made to a given file before the branch point affect the file
112
143
as it exists in the head of the branch. If you want to restrict to the
113
main branch, use a branch of 'TRUNK'.
144
main branch, use a branch of 'HEAD'.
146
By log comment. With the -l <regex> flag you can limit the ouptut to
147
patchsets with the commit message matching the regex.
149
By tag. With the -r <tag1> -r <tag2> you can limit the patchsets to
150
commits after a given tag1 and, optionally, before tag2.
115
152
d) viewing the changes made by a patchset.
117
To show the 'diff' output for a given patchset, use:
119
cvsps -s <patchset number>
121
It will show you the diff of changes made by the commit. Some effort was
122
made to ensure that the patches are valid, even in the case of removing or
123
creating files, a case in which 'cvs diff' fails.
154
To show the 'diff' output for a given patchset, use -g.
156
It will show you the diff of changes made by the selected commits.
157
Some effort was made to ensure that the patches are valid, even in the
158
case of removing or creating files, a case in which 'cvs diff' fails.
159
The patches generated are, generally speaking, applyable in the working
160
directory with the '-p1' option to the patch command.
125
162
e) what is timestamp fuzz factor (-z option)?
134
171
author, using the same log message, within <fuzz> seconds are considered
135
172
part of the same patchset. The default fuzz is 300 seconds (5 minutes).
177
Please read the manual page.
182
One of the main goals of cvsps was to make the patchset numbering stable across
183
all time, as long as no funny-business is done to the repository files themselves.
185
Unfortunately, as bugs have been fixed, the numbering has changed. This is most
186
regrettable, but unavoidable.
188
Additionally, in version 2.0, two changes have been made which will 'renumber'
191
1) The false 'globbing' of two commits from nearly the exact same time, by the
192
same person, with the same log description but to different branches. Now,
193
these will be reported as 2 patchsets instead of one.
195
2) The creation of a large volume of patchsets for 'file xyz was originally added on
196
branch' log messages. This occurs whenever a file is originally born on a branch,
197
and is exacerbated by the fact that even when all of these files are created with
198
a single commit, the 'file xyz...' messages, which contains the actual file name,
199
are different, causing a proliferation of these unwanted patchsets. These patchsets
200
are now silently eliminated from the output.
137
202
Reporting bugs / submitting patches.
138
203
-----------------------------------