SVN::Hooks::AllowLogChange - Allow changes in revision log messages.


SVN-Hooks documentation Contained in the SVN-Hooks distribution.

Index


Code Index:

NAME

Top

SVN::Hooks::AllowLogChange - Allow changes in revision log messages.

SYNOPSIS

Top

This SVN::Hooks plugin is used to allow revision log changes by some users.

It's deprecated. You should use SVN::Hooks::AllowPropChange instead.

It's active in the pre-revprop-change hook.

It's configured by the following directive.

ALLOW_LOG_CHANGE(WHO, ...)

This directive enables the change of revision log messages, which are mantained in the svn:log revision property.

The optional WHO argument specifies the users that are allowed to make those changes. If absent, any user can change a log message. Otherwise, it specifies the allowed users depending on its type.

STRING

Specify a single user by name.

REGEXP

Specify the class of users whose names are matched by the Regexp.

	ALLOW_LOG_CHANGE();
	ALLOW_LOG_CHANGE('jsilva');
	ALLOW_LOG_CHANGE(qr/silva$/);

AUTHOR

Top

Gustavo Chaves, <gnustavo@cpan.org>

BUGS

Top

Please report any bugs or feature requests to bug-svn-hooks-checkproperty at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=SVN-Hooks. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc SVN::Hooks

You can also look for information at:

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=SVN-Hooks

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/SVN-Hooks

* CPAN Ratings

http://cpanratings.perl.org/d/SVN-Hooks

* Search CPAN

http://search.cpan.org/dist/SVN-Hooks

COPYRIGHT & LICENSE

Top


SVN-Hooks documentation Contained in the SVN-Hooks distribution.
package SVN::Hooks::AllowLogChange;

use strict;
use warnings;
use Carp;
use SVN::Hooks;

use Exporter qw/import/;
my $HOOK = 'ALLOW_LOG_CHANGE';
our @EXPORT = ($HOOK);

our $VERSION = $SVN::Hooks::VERSION;

my @Valid_Users;

sub ALLOW_LOG_CHANGE {
    my @args = @_;

    foreach my $who (@args) {
	if (not ref $who or ref $who eq 'Regexp') {
	    push @Valid_Users, $who;
	}
	else {
	    croak "$HOOK: invalid argument '$who'\n";
	}
    }

    PRE_REVPROP_CHANGE(\&pre_revprop_change);

    return 1;
}

sub pre_revprop_change {
    my ($svnlook, $rev, $author, $propname, $action) = @_;

    $propname eq 'svn:log'
	or croak "$HOOK: the revision property $propname cannot be changed.\n";

    $action eq 'M'
	or croak "$HOOK: a revision log can only be modified, not added or deleted.\n";

    # If no users are specified, anyone can do it.
    return unless @Valid_Users;

    for my $user (@Valid_Users) {
	return if not ref $user and $author eq $user or $author =~ $user;
    }

    croak "$HOOK: you are not allowed to change a revision log.\n";
}

1; # End of SVN::Hooks::AllowLogChange