Man Linux: Main Page and Category List


       cvs-mailcommit - Send CVS commitments via mail


       cvs-mailcommit [options] [version*]


       cvs-mailcommit is a helper application to CVS to help people keep track
       of CVS repositories via mail.  It is hooked into the CVS system via the
       CVSROOT/loginfo file.  It will read modification information from CVS
       via stdin and require version information via the commandline.

       cvs-mailcommit will send differences of modified files or entire new
       files via mail to the denoted address.

       You’ll have to hook it into CVS for each module in a repository that
       you want to monitor via mail.  See INSTALLATION below


       This program supports the following arguments.  When the arguments
       don’t make sense the program won’t do anything.

       -m address, --mailto address
             Send the mail to the specified address.  This option can be
             specified on the commandline multiple times.

             Generate unified diffs for all modified files.

             Include the entire fill for newly created files that were added
             to the repository.

       --maxlines nnn
             You can specify how many lines per file may be quoted in the
             resulting mail.  Limiting the number of quoted lines may be
             useful for repositories with excessive changes that are similar.
             The default is to copy 400 lines.

       --xloop address
             Include a special X-Loop header in the generated mail.  This is
             intended for users to be able to filter CVS mails by a common
             header line.  The line will look like

             X-Loop: address

       --from address
             Generate a From:-line of the form

             From: CVS User foo <address>

             Otherwise the local user the program runs under will be used
             instead of address.  With this parameter you can ensure that all
             such mails will be sent with the same from line, which may be
             useful for moderated lists or some where only subscribers may

       --replyto address
             Try to redirect replies to CVS mails to another address by
             setting proper header lines such as

             Reply-To: address

             Mail-Followup-To: address

       --approved address
             Include a special Approved:-line in the mail.  This header is
             intended for moderated mailing-lists to pass the SmartList
             moderation mechanism.  The created header will look like

             Approved: address

       --cvs version string
             This option carries the CVS version info from CVS into the
             program.  It will be added automatically by CVS.  When installing
             this program into the loginfo file of a CVS repository, you will
             need to add the following option:

             --cvs %{sVv}

             If you want to test this program manually you’ll have to supply
             the module directory and the modified files including the old and
             new versions.  This will look like

             --cvs ’CVSROOT loginfo,1.1,1.2’

             This option is only usful for old-style CVS format strings (i.e.
             prior to CVS 1.12.6).  You can continue using old-style format
             strings with newer cvs if you write %1{sVv} and set
             UseNewInfoFmtStrings=yes in CVSROOT/config.  For more recent
             versions of CVS you should, however, use the new --root and --dir
             arguments and place %{sVv} at the end of the commandline.

       --root cvs repository
             Specify the CVS repository directory.  This is normally done by
             the CVS server.  Prior to version 1.12 the repository was
             transmitted to the log processor via the CVSROOT environment
             variable.  The parameter to this option is normally filled in by
             CVS using the %r format string:

             --root %r

       --dir module directory
             Specify the directory within the CVS repository in which
             directories or file were added or modified.  The parameter to
             this option is normally filled in by CVS using the %p format

             --dir %p


       cvs-mailcommit supports an additional configuration file
       /etc/ so that hard-coded default values can be
       overwritten.  The file is included via require and hence needs to
       contain valid Perl code, which evaluates to true.  I.e. place 1; at the
       end of the file.


       The CVSROOT/loginfo file controls where cvs commit log information is
       sent.  The first entry on a line is a regular expression which must
       match the directory (alias module) that the change is being made to,
       relative to the $CVSROOT.  If a match is found, then the remainder of
       the line is a filter program that should expect log information on its
       standard input.

       A loginfo line looks like

       <directory>    <command> --<option> --<option>


       The --cvs option is only valid for old-style CVS format strings prior
       to version 1.12.6 of CVS with %{sVv} or for new-style CVS format
       strings using the compatibility hack with %1{sVv}.

       For new-style CVS format strings for CVS version 1.12.6 or higher --cvs
       must not be used anymore, but instead --root and --dir are required.
       The version information %{sVv} must be added at the end of the command


       Assume you want to monitor changes in the CVSROOT module, then you may
       want to use the following line.

           CVSROOT     cvs-mailcommit \
             --mailto \
             --from \
             --cvs %{sVv} --diff --full

       If you want to distribute changes in a module via a mailing list where
       only these log messages should appear you may have to add an X-Loop: or
       Approved: header line.

           webwml      cvs-mailcommit \
             --mailto \
             --from \
             --approved \
             --cvs %{sVv} --diff --full

       The above configuration lines are valid only for old-style format
       strings.  With a more recent version of CVS (1.12.6 or newer) you’ll
       have to replace %{sVv} with %1{sVv} and set UseNewInfoFmtStrings to yes
       in CVSROOT/config.

       For new-style CVS format strings other parameters need to be used since
       CVS changed the syntax and semantics.  You must not use the --cvs
       option anymore but need to use --root and --dir and place the version
       list at the end.  The last example converted for new-style format
       strings looks like the following:

           webwml      cvs-mailcommit \
             --mailto \
             --from \
             --approved \
             --diff --full --root %r --dir %p %{sVv}

       To improve readability, the above lines were broken up into several
       lines using normal continuation lines.  This is not supported by CVS.
       You will have to write it in one single line.


       CVS does not support continuation lines (multiple lines per command) in
       the CVSROOT/loginfo file.  You’ll have to write each filter in a single
       line of its own.