1. Introduction
  2. Changes
  3. Features
  4. Similar Programs
  5. Platforms
  6. License
  7. Support
  8. Credits
  9. More Information
  10. Activity Batching
  11. Sample Email Message
  12. Known Issues
  13. Troubleshooting
  14. Installation
  15. Which Version is Installed?
  16. Installing on non-Windows Platforms
  17. Windows Installation
  18. Installation Part 1: Customization
    1. Testing Email Settings
    2. Testing IRC Settings
  19. Installation Part 2: Running the dgcvsnotify daemon
  20. Installation Part 3: Configuring the CVS Server
    1. CVS Users File
  21. Installation Part 4: Advanced Customization
  22. Stopping IRC Output
  23. Modifying Source Code on Windows Platforms
  24. PerlApp Support

Introduction

CvsNotify is a program for CVS that sends "taginfo", "loginfo" (commit), and "notify" (watch) notifications via email, News (NNTP), and/or IRC chat (actually, "notify" is via email only). This script was written specifically for CVSNT but at least a subset of the functionality will work on any type of CVS server.

Changes

October 2 2005 version 1.9.0.21

July 5 2005 version 1.9.0.18

May 22 2005 version 1.9.0.17

Features

Similar Programs

Platforms

License

GNU Public License. Free to use and redistribute. If you make modifications, please post them here.

Support

Credits

Credits

More Information

Samples, etc.

Activity Batching

ALL PROSPECTIVE USERS MUST READ THIS!

CvsNotify batches up activity for one user, more or less. Commit, tag, and notify (watch) notifications are batched separately based on the user, the branch, and (optionally) the directory in which the commit occurs. By default, watches are not batched (see WatchWaitSeconds in GlobalsDoc).

For example, if a user issues three commits, there will only be one notification for all of the commits.

CvsNotify waits until an "inactivity" period has passed before sending notifications. The inactivity period defaults to five minutes and is configured via NotifyWaitSeconds and WatchWaitSeconds in the GlobalsDoc.

Batching serves two purposes. First, recipients aren't inundated with notifications. Secondly, it removes the load of notifications from the CVS server so that CVS operations are as fast as possible without waiting, for example, for emails to be sent. Notifications are batched for sending at a later time via a daemon program. The daemon is dgcvsnotify.exe (or .pl) running in the background. The installation instructions below will provide more details.

Sample Email Message

See here

Known Issues

Troubleshooting

Unknown escape character '\p' ignored. Unknown escape character '\d' ignored. Unknown escape character '\c' ignored. Unknown escape character '\d' ignored. Script execution failed

Check the files in the CVSROOT folder (e.g., loginfo) and make sure you are using forward slashes instead of back slashes when specifying the path to dgcvsnotify.

Installation

CvsNotify was not meant to be used with repositories that use the :local: protocol. These scripts are meant for client-server usage. The :local: protocol should only be used when performing CVS actions from the CVS server locally.

Which Version is Installed?

Run dgcvsnotifyversion to find out. It also displays the location of the GlobalsDoc and CVSNotifyDoc files.

Installing on non-Windows Platforms

Windows Installation

Installation Part 1: Customization

After modifying the XML files, you must restart the dgcvsnotify daemon

Modify the GlobalsDoc

If you use email, set the following elements in GlobalsDoc:

More advanced customization is available. See Installation Part 4 below.

Testing Email Settings

Testing IRC Settings

Installation Part 2: Running the dgcvsnotify daemon

A "daemon" is a program that runs in the background. The daemon's job is to send CVS notifications to users.

If the daemon isn't running when CVS activity occurs, that activity is still captured. Nothing is lost. Once you start the daemon again, dgcvsnotify will send the notifications. In fact, if your SMTP, IRC, News, etc. server goes down, the daemon will attempt to send the message later. This feature is unique to CvsNotify within the realm of CVS scripts. CvsNotify is robust!

Installation Part 3: Configuring the CVS Server

CVS Users File

The users file in the CVSROOT module contains lines that look like:

joeuser:jshmo@yahoo.com

CVS uses this file to map CVS user names to email addresses. CVS uses a case-sensitive lookup when searching this file. This may cause issues. Please see http://devguy.com/bb/viewtopic.php?p=1365.

CvsNotify uses this file to send emails to the correct addresses when an event occurs to a watched file. If you don't have a users file in the CVSROOT module, or if the user isn't listed in this file, the notify script appends the default email domain to the CVS user name which as specified in the GlobalsDoc file.

CvsNotify also uses this file to properly populate the "From" field when sending emails or newsgroup posts.

Installation Part 4: Advanced Customization

Stopping IRC Output

Sometimes IRC output is lengthy and uninteresting. In these cases you may send "!nick stop" to stop the IRC output. "nick" is the case-insensitive name of the IRC bot. The next CVS operation will still be output to IRC (if the configuration still applies).

Modifying Source Code on Windows Platforms

PerlApp Support

PerlApp doesn't support POE programs. Here is a work-around. Run the following commands from the command line.

You only need to do this once. It's a good idea to back up your c:\perl\site\lib\poe\*.* before you do this.

Ignore the following errors:

Encoding.pm:

POE\.pm:

CvsNotify (last edited 2008-02-21 22:04:15 by devguy)