CVS-MAILCOMMIT(1)

โœจ NAME โœจ

okay so bestie, meet cvs-mailcommit โ€” she's the girl who sends your CVS commitments via mail ๐Ÿ’Œ๐Ÿ“ฌ. This is the CVS-MAILCOMMIT(1) manual, Debian GNU/Linux edition ๐Ÿง๐Ÿ’…


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

cvs-mailcommit [options] [version*]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

cvs-mailcommit is a helper application to CVS that helps people keep track of CVS repositories via mail ๐Ÿ“งโœจ. She gets hooked into the CVS system through the CVSROOT/loginfo file. She reads modification info from CVS via stdin and requires version info via the commandline โ€” the way she needs both sources of tea is giving main character energy fr fr ๐Ÿ’…

She'll send differences of modified files, or entire new files, via mail to the denoted address ๐Ÿ“จ.

bestie you'll have to hook her into CVS for each module in a repository that you want to monitor via mail. See INSTALLATION below ๐Ÿ‘‡

๐Ÿ’– OPTIONS ๐Ÿ’–

This program supports the following arguments. When the arguments don't make sense, the program won't do anything โ€” she's dramatic like that ๐Ÿ™ˆ๐Ÿ’€

  • -m address, --mailto address โ€” Send the mail to the specified address ๐Ÿ’Œ. This option can be specified on the commandline multiple times โ€” she's a multitasker, we love to see it ๐Ÿ‘‘
  • -d, --diff โ€” Generate unified diffs for all modified files ๐Ÿฉท
  • --full โ€” Include the entire file 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 ๐ŸŒธ
  • -x address, --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 write ๐Ÿ‘‘๐Ÿ“ฎ

  • --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
  • -a 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
  • -c version string, --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 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 โ€” do not forget the semicolon bestie, she WILL notice ๐Ÿ˜ญ


๐ŸŒˆ INSTALLATION ๐ŸŒˆ

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>

๐Ÿ’œ NOTES ๐Ÿ’œ

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 line.


๐ŸŒธ EXAMPLE ๐ŸŒธ

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

CVSROOT     cvs-mailcommit \
  --mailto master@host.org \
  --from cvs@cvshost.com \
  --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 master@host.org \
  --from cvs@cvshost.com \
  --approved cvsmaster@cvshost.com \
  --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 master@host.org \
  --from cvs@cvshost.com \
  --approved cvsmaster@cvshost.com \
  --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.


โš ๏ธ WARNING โš ๏ธ

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. No cap, she is not flexible on this one ๐Ÿ’€


โญ SOURCE โญ

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


and that's the whole manual bestie, you ate it, periodt ๐Ÿ’…โœจ This one was brought to you by the Debian Project ๐Ÿง๐Ÿ’–, dated 2020-05-31 โ€” love her, obsessed, no notes ๐Ÿซถ๐ŸŽ€๐ŸŒˆ