SYNOPSIS

cvs-mailcommit [options] [version*]

DESCRIPTION

cvs-mailcommit is a helper application to \s-1CVS\s0 to help people keep track of \s-1CVS\s0 repositories via mail. It is hooked into the \s-1CVS\s0 system via the \s-1CVSROOT\s0/loginfo file. It will read modification information from \s-1CVS\s0 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 \s-1CVS\s0 for each module in a repository that you want to monitor via mail. See \s-1INSTALLATION\s0 below

OPTIONS

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.

--diff

Generate unified diffs for all modified files.

--full

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 \s-1CVS\s0 mails by a common header line. The line will look like X-Loop: address

--from address

Generate a From:-line of the form From: \s-1CVS\s0 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 write.

--replyto address

Try to redirect replies to \s-1CVS\s0 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 \s-1CVS\s0 version info from \s-1CVS\s0 into the program. It will be added automatically by \s-1CVS\s0. When installing this program into the loginfo file of a \s-1CVS\s0 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 '\s-1CVSROOT\s0 loginfo,1.1,1.2' This option is only usful for old-style \s-1CVS\s0 format strings (i.e. prior to \s-1CVS\s0 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 \s-1CVS\s0 you should, however, use the new --root and --dir arguments and place %{sVv} at the end of the commandline.

--root cvs repository

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

--dir module directory

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

CONFIGURATION FILE

cvs-mailcommit supports an additional configuration file /etc/cvs-mailcommit.pl 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.

INSTALLATION

The \s-1CVSROOT\s0/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 $\s-1CVSROOT\s0. 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>

NOTES

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

For new-style \s-1CVS\s0 format strings for \s-1CVS\s0 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 line.

EXAMPLE

Assume you want to monitor changes in the \s-1CVSROOT\s0 module, then you may want to use the following line.

    CVSROOT     cvs-mailcommit \
      --mailto [email protected] \
      --from [email protected] \
      --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 [email protected] \ --from [email protected] \ --approved [email protected] \ --cvs %{sVv} --diff --full

The above configuration lines are valid only for old-style format strings. With a more recent version of \s-1CVS\s0 (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 \s-1CVS\s0 format strings other parameters need to be used since \s-1CVS\s0 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 [email protected] \ --from [email protected] \ --approved [email protected] \ --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 \s-1CVS\s0. You will have to write it in one single line.

WARNING

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

SOURCE

http://www.infodrom.org/Infodrom/tools/cvs-mailcommit.html