Info Node: (cvsbook.info)The verifymsg And rcsinfo Files
(cvsbook.info)The verifymsg And rcsinfo Files
The verifymsg And rcsinfo Files
-------------------------------
Sometimes you may just want a program to automatically verify that the
log message conforms to a certain standard and to stop the commit if
that standard is not met. This can be accomplished by using
`verifymsg', possibly with some help from `rcsinfo'.
The "verifymsg" file is the usual combination of regular expressions
and programs. The program receives the log message on standard input;
presumably it runs some checks to verify that the log message meets
certain criteria, then it exits with status zero or nonzero. If the
latter, the commit will fail.
Meanwhile, the left side of rcsinfo has the usual regular expressions,
but the right side points to template files instead of programs. A
template file might be something like this
Condition:
Fix:
Comments:
or some other collection of fields that a developer is supposed to fill
out to form a valid log message. The template is not very useful if
everyone commits using the -m option explicitly, but many developers
prefer not to do that. Instead, they run
floss$ cvs commit
and wait for CVS to automatically fire up a text editor (as specified in
the EDITOR environment variable). There they write a log message, then
save the file and exit the editor, after which CVS continues with the
commit.
In that scenario, an rcsinfo template would insert itself into the
editor before the user starts typing, so the fields would be displayed
along with a reminder to fill them in. Then when the user commits, the
appropriate program in `verifymsg' is invoked. Presumably, it will
check that the message does follow that format, and its exit status will
reflect the results of its inquiry (with zero meaning success).
As an aid to the verification programs, the path to the template from
the rcsinfo file is appended as the last argument to the program command
line in `verifymsg'; that way, the program can base its verification
process on the template itself, if desired.
Note that when someone checks out a working copy to a remote machine,
the appropriate rcsinfo template file is sent to the client as well
(it's stored in the CVS/ subdirectory of the working copy). However,
this means that if the rcsinfo file on the server is changed after that,
the client won't see the changes without re-checking out the project
(merely doing an update won't work).
Note also that in the verifymsg file, the ALL keyword is not supported
(although DEFAULT still is). This is to make it easier to override
default verification scripts with subdirectory-specific ones.