diff options
author | Keith Packard <keithp@evo.keithp.com> | 2006-02-20 11:35:16 -0800 |
---|---|---|
committer | Keith Packard <keithp@evo.keithp.com> | 2006-02-20 11:35:16 -0800 |
commit | cd83b8130e6d3a05135e959859cfc3f180d1ea69 (patch) | |
tree | 238ecd9c0dd480e4b0ac61ab30504f3c04611920 /README |
cvsps 2.1cvsps-2.1
Diffstat (limited to 'README')
-rw-r--r-- | README | 230 |
1 files changed, 230 insertions, 0 deletions
@@ -0,0 +1,230 @@ +CVSps (c) 2001,2002,2003 David Mansfield +------------------------------ + +Overview. +-------- + +CVSps is a program for generating 'patchset' information from a CVS +repository. A patchset in this case is defined as a set of changes made +to a collection of files, and all committed at the same time (using a +single 'cvs commit' command). This information is valuable to seeing the +big picture of the evolution of a cvs project. While cvs tracks revision +information, it is often difficult to see what changes were committed +'atomically' to the repository. + +Compiling. +--------- + +CVSps is a relatively small program, with only a few modules. +The Makefile is very simple and should work in most GNU type environments. +Unfortunately, I've only been able to test on Red Hat Linux, so YMMV. As +CVSps matures, I'm sure a more sophisticated build environment will evolve +with it. For now, just try 'make' and 'make install'. If you have any +problems let me know. + +Running. +------- + +Note: not all options are necessarily discussed here. Please check the +output of 'cvsps -h' and/or the manual page for the most up-to-date info. + +CVSps operates by parsing the 'cvs log' output. So to run it, you must +be in the working directory of a cvs project. CVSps handles +subdirectories fine, so run it in the top directory of your project. + +a) the ~/.cvsps/cvsps.cache file (or so it's called) + +Because you may have a *lot* of revision history in your project, and/or +your connection to the cvs server may be slow or congested, CVSps uses a +cache file for most operations. The first time you run CVSps, just issue: + +cvsps + +and will begin reading and parsing the cvs log. When it is finished it +will output all of the patchset information to stdout, and it will also +generate the '~/.cvsps/cvsps.cache' file. Note: for historical reasons +this file is still called the cvsps.cache file, but in reality it is named +based on the CVS/Root and CVS/Repository contents, and thus is shared for +the same repository checked out in multiple places. + +If the cache file exists, it won't ever be automatically updated. To +update the cache with cvs activity that has occurred since the ~/.cvsps/cvsps.cache +was last updated, use: + +cvsps -u + +If you question the integrity of the ~/.cvsps/cvsps.cache, or for some other reason +want to force a full cache rebuild, use (you could also 'rm' the cache file): + +cvsps -x + +b) Reading the output. + +CVSps's output is information about patchsets. A patchset looks like: + +--------------------- +PatchSet 999 +Date: 2002/07/11 19:50:46 +Author: alan +Branch: HEAD +Tag: (none) +Log: +[PATCH] Fix several pdc202xx problems + +Misnaming of 20270 as 20268R +Failure of LBA48 on 20262 +Incorrect speed detection because the old driver used host not drive side +cable detect +PDC202xx handling for quirks in udma reporting off some drives +LBA48 for PIO mode + +BKrev: 3d2dd386wJMnehoOAhv3wL991IfXVQ + +Members: + ChangeSet:1.999->1.1000 + MAINTAINERS:1.74->1.75 + drivers/ide/ide-features.c:1.4->1.5 + drivers/ide/ide-pci.c:1.18->1.19 + drivers/ide/pdc202xx.c:1.11->1.12 + include/linux/pci_ids.h:1.44->1.45 + +--------------------- + +This patchset is taken from the linux kernel BK->CVS tree. It shows the date, +the author, log message and each file that was modified. For each file the +pre-commit and post-commit revisions are given. You can also see (if +applicable, not in this case) if the files are on a branch, as well as the +tag (see TAGS below). + +Patchsets are ordered by commit timestamp, so as long as the clock on your +cvs server is monotonic, the numbering of patchsets should be invariant +across cache-rebuilds. (see COMPATIBILITY below). + +c) Limiting the patchset output. + +The default output of CVSps is to show all patchsets. This can be +filtered in one of many ways. These flags can be combined to really +limit the output to what you're interested in. + +By id. With the -s <ps range> you can specify individual PatchSets by +number or by range. Ranges can be of the form '<number>', '<number>-', +'-<number>' and of course '<number>-<number>'. Multiple ranges can be +specified seperated by commas. E.g. + +cvsps -s 999-1020,1025,4956- + +By author. With the -a <author> flag you limit the output to patchsets +committed by a given author. The author is usually the UNIX login id. + +By file. With the -f <file regex> flag you limit the output to patchsets +that have modified the given file. Because a regular expression can have +many pieces 'or'ed together, you can specify many different files here, +for example (note also the use of the ^ character): + +cvsps -f '^net/ipv4|^net/core' + +By date. With one date specification, CVSps shows only patchsets newer +than the date given, and with two dates, it shows patchsets between the +two dates. + +*NOTE ON DATE FORMAT*. Because I'm lazy, only one date format is +currently acceptable. 'YYYY/MM/DD HH:MM:SS' where time is given as +localtime, and HH is in 24 hour format. NOTE ALSO that cvs tends to +display times as GMT, but parse dates as localtime, so when using the '-D' +with cvs you need to convert from GMT to localtime in your head. CVSps is +not as fancy. It treats all dates as if in localtime, and therefore you +give CVSps dates the same way it gives them to you. + +By branch. With the -b <branch> flag you limit the output to patchsets +that have modified the history of the given branch. Note, this +doesn't necessarily mean the commit itself was made on the branch, since +the files in question may have existed prior to the branch point, in which +case changes made to a given file before the branch point affect the file +as it exists in the head of the branch. If you want to restrict to the +main branch, use a branch of 'HEAD'. + +By log comment. With the -l <regex> flag you can limit the ouptut to +patchsets with the commit message matching the regex. + +By tag. With the -r <tag1> -r <tag2> you can limit the patchsets to +commits after a given tag1 and, optionally, before tag2. + +d) viewing the changes made by a patchset. + +To show the 'diff' output for a given patchset, use -g. + +It will show you the diff of changes made by the selected commits. +Some effort was made to ensure that the patches are valid, even in the +case of removing or creating files, a case in which 'cvs diff' fails. +The patches generated are, generally speaking, applyable in the working +directory with the '-p1' option to the patch command. + +e) what is timestamp fuzz factor (-z option)? + +There's another annoying feature of cvs. When you commit a large change, +the timestamp on the change is created per file committed. For example: +if you commit changes to 60 files on a slow server, taking, say, 60 +seconds, the 'commit time' as given in the log message for the first file +will differ from that of the last file by 60 seconds. + +The fuzz factor attempts to workaround this by saying: commits by the same +author, using the same log message, within <fuzz> seconds are considered +part of the same patchset. The default fuzz is 300 seconds (5 minutes). + +TAGS +---- + +Please read the manual page. + +COMPATIBILITY +------------- + +One of the main goals of cvsps was to make the patchset numbering stable across +all time, as long as no funny-business is done to the repository files themselves. + +Unfortunately, as bugs have been fixed, the numbering has changed. This is most +regrettable, but unavoidable. + +Additionally, in version 2.0, two changes have been made which will 'renumber' +the patch sets. + +1) The false 'globbing' of two commits from nearly the exact same time, by the +same person, with the same log description but to different branches. Now, +these will be reported as 2 patchsets instead of one. + +2) The creation of a large volume of patchsets for 'file xyz was originally added on +branch' log messages. This occurs whenever a file is originally born on a branch, +and is exacerbated by the fact that even when all of these files are created with +a single commit, the 'file xyz...' messages, which contains the actual file name, +are different, causing a proliferation of these unwanted patchsets. These patchsets +are now silently eliminated from the output. + +Reporting bugs / submitting patches. +----------------------------------- + +Although the current version is perfect and bug free, you can still send +bug reports, feature requests and patches to me at: + +cvsps@dm.cobite.com + +I will try to maintain CVSps and make releases regularly. The most recent +version of CVSps will always be available at http://www.cobite.com/cvsps + +Special thanks to my employer Cobite and Robert Lippman, who've given me +time to develop this tool. + +Known Problems (this will become the FAQ if anyone ever A any Q). +---------------------------------------------------------------- + +1) What is the '*** file xyz doesn't match strip_path abc' error? + +This error occurs when one of the subdirectories of the directory you +ran CVSps in is checked out from a different repository. CVSps tries +to remove the repository path information from the filenames that it +gets to give you working-directory local pathnames. It does this +at startup by parsing the CVS/Root and CVS/Repository files. If +the contents of these two files is different for some subdirectory, +all of the files in that subdirectory will be ignored. + +You can always run CVSps in that subdirectory, and since it IS a +separate repository, that does make a little bit of sense. |