CVS update [cvs1-11-x-branch]: /ccvs/doc/
[email protected] 14 Apr 2005 14:24:57 -0000
| Newsgroups | gmane.comp.version-control.cvs.cvs |
|---|---|
| Message-ID | <[email protected]> |
Tag: cvs1-11-x-branch User: dprice Date: 05/04/14 07:24:57 Modified: /ccvs/doc/ ChangeLog, cvs.texinfo, stamp-vti, version.texi Log: * cvs.texinfo (Administrative files): Add "Trigger Scripts" node to the menu. (Trigger Scripts, Trigger Script Security): New nodes. (syntax): Move under Trigger scripts node. (commit files, taginfo): Rewrite to reference Trigger Script node. File Changes: Directory: /ccvs/doc/ ===================== File [changed]: ChangeLog Url: https://ccvs.cvshome.org/source/browse/ccvs/doc/ChangeLog?r1=1.721.2.86&r2=1.721.2.87 Delta lines: +8 -0 ------------------- --- ChangeLog 6 Apr 2005 20:57:47 -0000 1.721.2.86 +++ ChangeLog 14 Apr 2005 14:24:54 -0000 1.721.2.87 @@ -1,3 +1,11 @@ +2005-04-14 Derek Price <[email protected]> + + * cvs.texinfo (Administrative files): Add "Trigger Scripts" node to + the menu. + (Trigger Scripts, Trigger Script Security): New nodes. + (syntax): Move under Trigger scripts node. + (commit files, taginfo): Rewrite to reference Trigger Script node. + 2005-04-06 Derek Price <[email protected]> * Makefile.am (MAINTAINERCLEANFILES): Add cvs.1. File [changed]: cvs.texinfo Url: https://ccvs.cvshome.org/source/browse/ccvs/doc/cvs.texinfo?r1=1.545.2.40&r2=1.545.2.41 Delta lines: +94 -50 --------------------- --- cvs.texinfo 31 Jan 2005 22:11:04 -0000 1.545.2.40 +++ cvs.texinfo 14 Apr 2005 14:24:54 -0000 1.545.2.41 @@ -11864,6 +11864,8 @@ @menu * modules:: Defining modules * Wrappers:: Specify binary-ness based on file name +* Trigger Scripts:: Some notes on the commit support files and + taginfo, referenced below. * commit files:: The commit support files (commitinfo, verifymsg, editinfo, loginfo) * taginfo:: Verifying/Logging tags @@ -12360,56 +12362,26 @@ @c One catch--"cvs diff" will not invoke the wrappers @c (probably a CVS bug, although I haven't thought it out). -@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@node commit files -@appendixsec The commit support files -@cindex Committing, administrative support files - -The files described in this section provide flexible ways to run -programs whenever something is committed. - -There are three kinds of programs that can be run on -commit. They are specified in files in the repository, -as described below. The following table summarizes the -file names and the purpose of the corresponding -programs. - -@table @file -@item commitinfo -The program is responsible for checking that the commit -is allowed. If it exits with a non-zero exit status -the commit will be aborted. - -@item verifymsg -The specified program is used to evaluate the log message, -and possibly verify that it contains all required -fields. This is most useful in combination with the -@file{rcsinfo} file, which can hold a log message -template (@pxref{rcsinfo}). - -@item editinfo -The specified program is used to edit the log message, -and possibly verify that it contains all required -fields. This is most useful in combination with the -@file{rcsinfo} file, which can hold a log message -template (@pxref{rcsinfo}). (obsolete) - -@item loginfo -The specified program is called when the commit is -complete. It receives the log message and some -additional information and can store the log message in -a file, or mail it to appropriate persons, or maybe -post it to a local newsgroup, or@dots{} Your -imagination is the limit! -@end table +@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +@node Trigger Scripts +@appendixsec The Trigger Scripts +@cindex Info files +@cindex Trigger scripts + +Several of the administrative files support triggers, or the launching external +scripts or programs at specific times before or after particular events. The +individual files are discussed in the later sections, @ref{commit files} and +@ref{taginfo}, but some of the common elements are discussed here. + +All the trigger scripts are launched in a copy of the user sandbox being +committed, on the server, in client-server mode. In local mode, the scripts +are actually launched directly from the user sandbox directory being committed. +For most intents and purposes, the same scripts can be run in both locations +without alteration. @menu * syntax:: The common syntax -* commitinfo:: Pre-commit checking -* verifymsg:: How are log messages evaluated? -* editinfo:: Specifying how log messages are created - (obsolete) -* loginfo:: Where should log messages be sent? +* Trigger Script Security:: Trigger script security @end menu @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -12474,6 +12446,78 @@ @c unambiguous but there is nothing like an example to @c confirm people's understanding of this sort of thing). +@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +@node Trigger Script Security +@appendixsubsec Security and the Trigger Scripts +@cindex Info files, security +@cindex Trigger scripts, security + +Security is a huge subject, and implementing a secure system is a non-trivial +task. This section will barely touch on all the issues involved, but it is +well to note that, as with any script you will be allowing an untrusted +user to run on your server, there are measures you can take to help prevent +your trigger scripts from being abused. + +For instance, since the CVS trigger scripts all run in a copy of the user's +sandbox on the server, a naively coded Perl trigger script which attempts to +use a Perl module that is not installed on the system can be hijacked by any +user with commit access who is checking in a file with the correct name. Other +scripting languages may be vulnerable to similar hacks. + +One way to make a script more secure, at least with Perl, is to use scripts +which invoke the @code{-T}, or "taint-check" switch on their @code{#!} line. +In the most basic terms, this causes Perl to avoid running code that may have +come from an external source. Please run the @code{perldoc perlsec} command +for more on Perl security. Again, other languages may implement other security +verification hooks which look more or less like Perl's "taint-check" mechanism. + +@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +@node commit files +@appendixsec The commit support files +@cindex Committing, administrative support files + +There are three kinds of trigger scripts (@pxref{Trigger Scripts}) that can be +run at various times during a commit. They are specified in files in the +repository, as described below. The following table summarizes the +file names and the purpose of the corresponding programs. + +@table @file +@item commitinfo +The program is responsible for checking that the commit +is allowed. If it exits with a non-zero exit status +the commit will be aborted. + +@item verifymsg +The specified program is used to evaluate the log message, +and possibly verify that it contains all required +fields. This is most useful in combination with the +@file{rcsinfo} file, which can hold a log message +template (@pxref{rcsinfo}). + +@item editinfo +The specified program is used to edit the log message, +and possibly verify that it contains all required +fields. This is most useful in combination with the +@file{rcsinfo} file, which can hold a log message +template (@pxref{rcsinfo}). (obsolete) + +@item loginfo +The specified program is called when the commit is +complete. It receives the log message and some +additional information and can store the log message in +a file, or mail it to appropriate persons, or maybe +post it to a local newsgroup, or@dots{} Your +imagination is the limit! +@end table + +@menu +* commitinfo:: Pre-commit checking +* verifymsg:: How are log messages evaluated? +* editinfo:: Specifying how log messages are created + (obsolete) +* loginfo:: Where should log messages be sent? +@end menu + @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @node commitinfo @appendixsubsec Commitinfo @@ -13054,9 +13098,9 @@ The @file{taginfo} file defines programs to execute when someone executes a @code{tag} or @code{rtag} command. The @file{taginfo} file has the standard form -for administrative files (@pxref{syntax}), +for trigger scripts (@pxref{Trigger Scripts}), where each line is a regular expression -followed by a command to execute. The arguments passed +followed by a command to execute (@pxref{syntax}). The arguments passed to the command are, in order, the @var{tagname}, @var{operation} (@code{add} for @code{tag}, @code{mov} for @code{tag -F}, and @code{del} for File [changed]: stamp-vti Url: https://ccvs.cvshome.org/source/browse/ccvs/doc/stamp-vti?r1=1.19.2.67&r2=1.19.2.68 Delta lines: +2 -2 ------------------- --- stamp-vti 15 Mar 2005 21:56:54 -0000 1.19.2.67 +++ stamp-vti 14 Apr 2005 14:24:55 -0000 1.19.2.68 @@ -1,4 +1,4 @@ -@set UPDATED 7 March 2005 -@set UPDATED-MONTH March 2005 +@set UPDATED 8 April 2005 +@set UPDATED-MONTH April 2005 @set EDITION 1.11.19.1 @set VERSION 1.11.19.1 File [changed]: version.texi Url: https://ccvs.cvshome.org/source/browse/ccvs/doc/version.texi?r1=1.20.2.67&r2=1.20.2.68 Delta lines: +2 -2 ------------------- --- version.texi 15 Mar 2005 21:56:54 -0000 1.20.2.67 +++ version.texi 14 Apr 2005 14:24:55 -0000 1.20.2.68 @@ -1,4 +1,4 @@ -@set UPDATED 7 March 2005 -@set UPDATED-MONTH March 2005 +@set UPDATED 8 April 2005 +@set UPDATED-MONTH April 2005 @set EDITION 1.11.19.1 @set VERSION 1.11.19.1