Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
cvsps(1)		    General Commands Manual		      cvsps(1)

NAME
       CVSps - create patchset information from	CVS

SYNOPSIS
       cvsps [-h] [-x] [-u] [-z	<fuzz>]	[-g] [-s <patchset>] [-a <author>] [-f
       <file>] [-d <date1> [-d <date2>]] [-l <text>] [-b <branch>]  [-r	 <tag>
       [-r  <tag>]]  [-p  <directory>]	[-v]  [-t]  [--norc] [--summary-first]
       [--test-log  <filename>]	 [--bkcvs]  [--no-rlog]	 [--diff-opts  <option
       string>]	  [--cvs-direct]  [--debuglvl  <bitmask>]  [-Z	<compression>]
       [--root <cvsroot>] [-q] [-A] [<repository>]

DESCRIPTION
       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  (us-
       ing  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

OPTIONS
       -h     display usage summary

       -x     ignore (and rebuild) ~/.cvsps/cvsps.cache	file

       -u     update ~/.cvsps/cvsps.cache file

       -z <fuzz>
	      set the timestamp	fuzz factor for	identifying patch sets

       -g     generate diffs of	the selected patch sets

       -s <patchset>[-[<patchset>]][,<patchset>...]
	      generate a diff for a given patchsets and	patchset ranges

       -a <author>
	      restrict output to patchsets created by author

       -f <file>
	      restrict output to patchsets involving file

       -d <date1> -d <date2>
	      if just one date specified, show revisions newer than date1.  If
	      two dates	specified, show	revisions between two dates.

       -l <regex>
	      restrict output to patchsets matching regex in log message

       -b <branch>
	      restrict	output	to  patchsets affecting	history	of branch.  If
	      you want to restrict to the main branch, use a branch of 'HEAD'.

       -r <tag1> -r <tag2>
	      if just one tag specified, show revisions	 since	tag1.  If  two
	      tags specified, show revisions between the two tags.

       -p <dir>
	      output  individual  patchsets as files in	<dir> as <dir>/<patch-
	      set>.patch

       -v     show very	verbose	parsing	messages

       -t     show some	brief memory usage statistics

       --norc when invoking cvs, ignore	the .cvsrc file

       --summary-first
	      when multiple patchset diffs are being generated,	put the	patch-
	      set summary for all patchsets at the beginning of	the output.

       --test-log <captured cvs	log file>
	      for  testing  changes, you can capture cvs log output, then test
	      against this captured file instead of hammering  some  poor  CVS
	      server

       --bkcvs
	      (see note	below) for use in parsing the BK->CVS tree log formats
	      only.  This enables some hacks which are not generally  applica-
	      ble.

       --no-rlog
	      disable  the use of rlog internally.  Note: rlog is required for
	      stable PatchSet numbering.  Use with care.

       --diffs-opts <option string>
	      send a custom set	of options to diff, for	 example  to  increase
	      the number of context lines, or change the diff format.

       --cvs-direct (--no-cvs-direct)
	      enable  (disable)	 built-in  cvs	client	code. This enables the
	      'pipelining' of multiple requests	over a single client, reducing
	      the overhead of handshaking and authentication to	one per	Patch-
	      Set instead of one per file.

       --debuglvl <bitmask>
	      enable various debug output channels.

       -Z <compression>
	      A	value 1-9 which	specifies amount of compression.  A value of 0
	      disables compression.

       --root <cvsroot>
	      Override	the setting of CVSROOT (overrides working dir. and en-
	      vironment).  For --cvs-direct only.

       -q     Be quiet about warnings.	-A Show	ancestor  branch  when	a  new
	      branch is	found.

       <repository>
	      Operate on the specified repository (overrides working dir.)

NOTE ON	TAG HANDLING
       Tags  are  fundamentally	 'file	at a time' in cvs, but like everything
       else, it	would be nice to imagine that they are 'repository at a	time.'
       The  approach cvsps takes is that a tag is assigned to a	patchset.  The
       meaning of this is that after this patchset, every  revision  of	 every
       file  is	 after the tag (and conversely,	before this patchset, at least
       one file	is still before	the tag).  However, there are two kinds	of in-
       consistent  (or	'funky') tags that can be created, even	when following
       best practices for cvs.

       The first is what is called a FUNKY tag.	 A  funky  tag	is  one	 where
       there are patchsets which are chronologically (and thus by patchset id)
       earlier than the	tag, but are tagwise after.  These tags	will be	marked
       as  '**FUNKY**'	in the Tag: section of the cvsps output.  When a funky
       tag is specified	as one of the '-r' arguments, there are	some number of
       patchsets  which	 need to be considered out of sequence.	 In this case,
       the patchsets themselves	will be	labeled	FUNKY and  will	 be  processed
       correctly.

       The  second  is	called	an INVALID tag.	 An invalid tag	is a tag where
       there are patchsets which are chronologically (and thus by patchset id)
       earlier than the	tag, but which have members which are tagwise both be-
       fore, and after the tag,	in the same patchset.  If an  INVALID  tag  is
       specified  as one of the	'-r' arguments,	cvsps will flag	each member of
       the affected patchsets as before	or after the tag and the patchset sum-
       mary will indicate which	members	are which, and diffs will be generated
       accordingly.

NOTE ON	CVS VERSIONS
       Among the different cvs subcommands used	by cvsps is  the  'rlog'  com-
       mand.   The  rlog  command is used to get revision history of a module,
       and it disregards the current working directory.	 The important differ-
       ence  between  'rlog'  and 'log'	(from cvsps perspective) is the	'rlog'
       will include log	data for files not in the current  working  directory.
       The  impact  of	this is	mainly when there are directories which	at one
       time had	files, but are now empty, and have been	pruned from the	 work-
       ing directory with the '-P' option.  If 'rlog' is not used, these files
       logs will not be	parsed,	and the	PatchSet numbering will	be unstable.

       The main	problem	with 'rlog' is that, until cvs version 1.11.1,	'rlog'
       was  an	alias  for the 'log' command.  This means, for old versions of
       cvs, 'rlog' has different semantics and usage.  cvsps will  attempt  to
       work  around  this problem by detecting capable versions	of cvs.	 If an
       old version is detected,	'log' will be  used  instead  of  'rlog',  and
       YMMV.

NOTE ON	GENERATED DIFFS
       Another	important  note	is that	cvsps will attempt, whenever possible,
       to use the r-commands (rlog, rdiff  and co) instead of the  local  com-
       mands  (log,  diff,  and	 update).   This is to allow cvsps to function
       without a completely checked out	tree.  Because	these  r-commands  are
       used,  the  generated  diffs will include the module directory in them,
       and it is recommended to	apply them in the working directory  with  the
       -p1 option to the patch command.	 However, if the --diff-opts option is
       specified (to change, for example, the lines of	context),  then	 rdiff
       cannot  be used,	because	it doesn't support arbitrary options.  In this
       case, the patches will be generated without the module directory	in the
       path, and -p0 will be required when applying the	patch.	When diffs are
       generated in cvs-direct mode (see below), however, they will always  be
       -p1 style patches.

NOTE ON	BKCVS
       The --bkcvs option is a special operating mode that should only be used
       when parsing the	log files from the BK ->  CVS  exported	 linux	kernel
       trees.	cvsps  uses  special semantics for recreating the BK ChangeSet
       metadata	that has been embedded in the log files	for those trees.   The
       --bkcvs	option	should	only be	specified when the cache file is being
       created or updated (i.e.	initial	run of cvsps, or when -u  and  -x  op-
       tions are used).

NOTE ON	CVS-DIRECT
       As  of  version	2.0b6  cvsps  has  a partial implementation of the cvs
       client code built in.  This reduces the RTT and/or handshaking overhead
       from  one  per  patchset	member to one per patchset.  This dramatically
       increases the speed of generating diffs over a slow link, and  improves
       the  consistency	of operation.  Currently the --cvs-direct option turns
       on the use of this code,	but it very well may be	default	 by  the  time
       2.0  comes  out.	  The built-in cvs code	attempts to be compatible with
       cvs, but	may have problems, which should	be reported.   It  honors  the
       CVS_RSH	and  CVS_SERVER	 environment variables,	but does not parse the
       ~/.cvsrc	file.

NOTE ON	CVSPS RC FILE
       CVSps parses an rc file at startup.  This file  should  be  located  in
       ~/.cvsps/cvspsrc.  The file should contain arguments, in	the exact syn-
       tax as the command line,	one per	line.  If an argument takes a  parame-
       ter, the	parameter should be on the same	line as	the argument.

NOTE ON	DATE FORMATS
       All dates are reported in localtime.  This can be overridden (as	usual)
       using the TZ environment	variable.  Dates as arguments must be  in  the
       format 'yyyy/mm/dd hh:mm:ss'; for example,

	   $ cvsps -d '2004/05/01 00:00:00' -d '2004/07/07 12:00:00'

SEE ALSO
       cvs(1),	ci(1),	co(1),	cvs(5),	cvsbug(8), diff(1), grep(1), patch(1),
       rcs(1), rcsdiff(1), rcsmerge(1),	rlog(1).

REPORTING BUGS
       Report bugs to "David Mansfield <cvsps@dm.cobite.com>"

BUGS
       No known	bugs.

								      cvsps(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | NOTE ON TAG HANDLING | NOTE ON CVS VERSIONS | NOTE ON GENERATED DIFFS | NOTE ON BKCVS | NOTE ON CVS-DIRECT | NOTE ON CVSPS RC FILE | NOTE ON DATE FORMATS | SEE ALSO | REPORTING BUGS | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=cvsps&sektion=1&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help