Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…


Cannot retrieve contributors at this time

executable file 132 lines (108 sloc) 5.701 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
#!/usr/bin/perl -w

use strict;
use SVN::Notify;

# Parse out the options.
my $opts = SVN::Notify->get_options
  or require Pod::Usage && Pod::Usage::pod2usage(2);

# Handle version, help, man.
if (delete $opts->{version}) {
    print 'svnnotify ', SVN::Notify->VERSION, $/;

require Pod::Usage && Pod::Usage::pod2usage(
    '-verbose' => 99,
    '-sections' => '(?i:(Usage|Options))',
    '-exitval' => 0,
) if delete $opts->{help};

require Pod::Usage && Pod::Usage::pod2usage(
    '-verbose' => 99,
    '-sections' => '.+',
    '-exitval' => 0,
) if delete $opts->{man};

# What class are we using?
my $class = 'SVN::Notify';
$class .= '::' . delete $opts->{handler} if $opts->{handler};

# Do it!
my $notifier = $class->new(%$opts);


=head1 Name

svnnotify - Subversion activity notification

=head1 Usage

svnnotify --repos-path "$1" --revision "$2" [options]

=head1 Options

-p --repos-path PATH Path to the Subversion repository. Required.
-r --revision REVISION Commit revision number. Required.
-t --to ADDRESS The notification destination email address.
Required unless --to-regex-map.
-x --to-regex-map TO=REGEX A mapping between a destination email address
and a regular expression to match against the
directories affected by the commit. Required
unless --to or --to-email-map.
--to-email-map REGEX=TO The inverse of --to-regex-map: Map a regular
expresion to an email address. Required unless
--to or --to-regex-map.
-f --from ADDRESS Email address to use in the From header.
-D --user-domain DOMAIN Domain name to append to the username to
complete the email address in the From header.
-l --svnlook SVNLOOK Location of the svnlook executable.
-s --sendmail SENDMAIL Location of the sendmail executable.
-E --set-sender Set the envelope sender to the from address.
--smtp ADDRESS Address for an SMTP server.
--smtp-user USERNAME Username for authenticating to a SMTP server.
--smtp-pass PASSWORD Password for authenticating to a SMTP server.
--smtp-port PORT Port to connect to on the SMTP server.
--smtp-tls Enable TLS/SSL connection to the SMTP server.
-c --encoding ENCODING The character encoding for reading and writing
--svn-encoding ENCODING The character encoding of the log message and
the repository files.
--diff-encoding ENCODING The character encoding of the repository files.
-g --language LANGUAGE Value for the Content-Language header and $LANG
environment variable.
-d --with-diff Include the diff in the message.
-a --attach-diff Attach the diff to the message.
-w --diff-switches SWITCHES Switches to pass to C<svnlook diff>.
--diff-content-type TYPE Sets the Content-Type for diff attachments.
-R --reply-to ADDRESS Address for use in the Reply-To header.
--add-header NAME=VALUE Add an extra header to the email.
-P --subject-prefix PREFIX String to prepend to the subject.
-C --subject-cx Include the context of the commit in the
-X --strip-cx-regex Regex to remove part of the CX file name from
the subject.
-O --no-first-line Do not include the first line of the log
message in the subject.
-i --max-sub-length LENGTH Maximum size of the subject line.
-e --max-diff-length LENGTH Maximum size of the diff output.
-H --handler HANDLER The notification handler, such as "HTML".
-F --filter FILTER An output filter, such as "Markdown".
-A --author-url URL Include link to specified author URL.
-U --revision-url URL Include links to specified Revision URL.
-T --rt-url URL Include links to specified Request Tracker URL.
-B --bugzilla-url URL Include links to specified Bugzilla URL.
-J --jira-url URL Include links to specified JIRA URL.
-G --gnats-url URL Include links to specified Gnats URL.
--ticket-map REGEX=URL Regex and URL for custom ticket identifiers.
--header HEADER Text header to display before body.
--footer FOOTER Text footer to display at end of body.
-V --verbose Incremental verbose mode.
-h --help Print this usage statement and exit.
-m --man Print the complete documentation and exit.
-v --version Print the version number and exit.

More options may be supported by the subclass of SVN::Notify specified by the
C<--handler> option or by filters specified by the C<--filter> option. Consult
the documentation of the relevant modules for details.

=head1 See Also

See L<SVN::Notify|SVN::Notify> for the complete documentation. If you're
having issues with character encodings, see especially the L<Character
Encoding Support|SVN::Notify/"Chraracter Encoding Support"> section.

=head1 Author

David E. Wheeler <>

=head1 Copyright and License

Copyright (c) 2004-2011 David E. Wheeler. Some Rights Reserved.

This module is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.

Something went wrong with that request. Please try again.