[cvsnt] New parameters for build 1861

Tony Hoyle tmh at nodomain.org
Thu Jan 27 19:45:10 GMT 2005


I still haven't documented the xxxinfo format for the new builds... here 
it is (in bare form anyway - sorry it's a bit terse).

Each file has (potentially) two default format strings.  One for the 
command line parameters and one for the STDIN data.  If you don't 
override them then the defaults are used for that part.

The full options I'll describe below, but the defaults are:

		command line	stdin
taginfo 	%t %o %p	%<(s v}
verifymsg	%l
loginfo				(see below)
historyinfo	%t|%d|%u|%w|%s|%v
notify				(see below)
commitinfo	%r/%p		%<s
precommand	%r %c		%<a
postcommand	%r/%p %c
premodule	%r/%p %c %o
postmodule	%r/%p %c %o

loginfo default stdin is:
%<< Update of %r/%p\nIn directory %H:%P\nModified Files:\n\t(list of 
files)\nLog Message:\n%m

notify default stdin is:
%<< %p %f\n--\nTriggered by %y watch on %r\nBy %u

These are the formatting options available for each file:

Global - available to all commands:
%c - command being executed
%d - date/time of command
%h - remote host name
%u - cvs username
%r - repository alias
%R - repository location
%S - session/commit id
%e - editor ($CVSEDITOR)
%H - local host name
%P - server temporary directory
%i - client version string, if supplied
%n - empty string
%% - %

$<something> evaluates to one of
1. A cvs internal variable 
(CVSEDITOR,VISUAL,EDITOR,USER,CVSPID,SESSIONID,COMMITID,CVSROOT)
2. A user supplied variable (cvs -s foo=bar)
3. An environment variable (eg. PATH)

%{...} groups a series of options into individual parameters.  The 
default separator is a comma but if you separate the options by spaces 
then spaces are used, as in:
%{sVv}    - repository file1,ver1a,ver1b file2,ver2a,ver2b
%{s V v}  - repository "file1 ver1a ver1b" "file2 ver2a ver2b"
%s %V %v  - repository file1 file2 ver1a ver2a ver1b ver2b

%< is an option sent to stdin (see below)

commitinfo:
%s - filename
%m - message
%p - current directory relative to root

taginfo:
%m - message
%p - current directory relative to root
%s - list of affected filenames
%v - versions of affected filenames
%b - type of tag (T,N,?)
%o - operation (add,mov,del)
%t - tag name

verifymsg:
%p - current directory relative to root
%l - filename to verify

loginfo:
%m - message
%T - status string (used by import?)
%p - directory relative to root
%s - repository name followed by list of filenames
%V - list of old versions
%v - list of new versions
%b - list of bug ids
%t - list of tags
%y - list of change types ('U','C','M', etc.)

history:
%t - history entry type
%w - working directory (in history format)
%v - revisions affected
%s - filename

precommand:
%a - list of arguments passed on command line

premodule, postmodule:
%o - module name

postcommand, postcommit:
%p - directory relative to cvsroot

notify:
%m - message supplied on command line
%b - bug identifier
%p - directory relative to cvsroot
%s - user being notified
%t - tag or branch
%y - notification type
%f - file being notified

stdin and multiline arguments

Anything that goes to stdin uses %<, so for example %<c puts the command 
name on stdin.

You can format long strings to stdin using %<< and split lines using \n:

%<< The command entered was %c\nThe date is %d\n

(%<< must be the last %< on the line as it sends all subsequent 
characters to stdin without any further checks).

If the text is even longer you can use a special form of this:

DEFAULT parseme.pl %<<FOO
The command entered was %c
The date is %d
FOO

Tony



More information about the cvsnt mailing list