Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SVN::Hooks::UpdateConfUser(Contributed Perl DocumSVN::Hooks::UpdateConfFile(3)

NAME
       SVN::Hooks::UpdateConfFile - Maintain the repository configuration
       versioned.

VERSION
       version 1.34

SYNOPSIS
       This SVN::Hooks plugin allows you to maintain the repository
       configuration files under version control.

       The repository configuration is usually kept in the directory "conf"
       under the directory where the repository	was created. In	a brand	new
       repository you see there	the files "authz", "passwd", and
       "svnserve.conf".	It's too bad that these	important files	are usually
       kept out	of any version control system. This plugin tries to solve this
       problem allowing	you to keep these files	versioned under	the same
       repository where	they are used.

       It's active in the "pre-commit" and the "post-commit" hooks.

       It's configured by the following	directive.

   UPDATE_CONF_FILE(FROM, TO, @ARGS)
       This directive makes that after a successful commit in which the	file
       FROM, under version control, have been added or modified, its newest
       version is copied to TO.

       FROM can	be a string or a qr/Regexp/ specifying the file	path relative
       to the repository's root	(e.g. "trunk/src/version.c" or
       "qr:^conf/(\w+).conf$:").

       TO must be a relative path indicating where the original	file must be
       copied to below the "/repo/conf"	directory in the server. It can	be an
       explicit	file name or a directory, in which case	the basename of	FROM
       is used as the name of the destination file. Non-existing directory
       components of TO	are automatically created.

       Note that if the	path doesn't exist the hook assumes that it should be
       a file. To make sure it's understood as a directory you may end it with
       a forward slash (/).

       If FROM is a qr/Regexp/,	TO is evaluated	as a string in order to	allow
       for the interpolation of	capture	buffers	from the regular expression.
       This is useful to map the copy operation	to a different directory
       structure. For example, this configuration "qr:^conf/(\w+).conf$: =>
       '$1.conf'" updates any .conf file in the	repository conf	directory.

       The optional @ARGS must be a sequence of	pairs like these:

       validator => ARRAY or CODE
	   A validator is a function or	a command (specified by	an array of
	   strings that	will be	passed to the shell) that will check the
	   contents of FROM in the pre-commit hook to see if it's valid. If
	   there is no validator, the contents are considered valid.

	   The function	receives three arguments:

	   A string with the contents of FROM
	   A string with the relative path to FROM in the repository
	   An SVN::Look	object representing the	commit transaction

	   The command is called with three arguments:

	   The path to a temporary copy	of FROM
	   The relative	path to	FROM in	the repository
	   The path to the root	of the repository in the server
       generator => ARRAY or CODE
	   A generator is a function or	a command (specified by	an array of
	   strings that	will be	passed to the shell) that will transform the
	   contents of FROM in the post-commit hook before copying it to TO.
	   If there is no generator, the contents are copied as	is.

	   The function	receives the same three	arguments as the validator's
	   function above.

	   The command is called with the same three arguments as the
	   validator's command above.

       actuator	=> ARRAY or CODE
	   An actuator is a function or	a command (specified by	an array of
	   strings that	will be	passed to the shell) that will be invoked
	   after a successful commit of	FROM in	the post-commit	hook.

	   The function	receives the same three	arguments as the validator's
	   function above.

	   The command is called with the same three arguments as the
	   validator's command above.

       rotate => NUMBER
	   By default, after each successful commit the	TO file	is overwriten
	   by the new contents of FROM.	With this option, the last NUMBER
	   versions of TO are kept on disk with	numeric	suffixes ranging from
	   .0 to ".NUMBER-1". This can be useful, for instance,	in case	you
	   manage to commit a wrong authz file that denies any subsequent
	   commit.

       remove => BOOL
	   By default, if FROM is deleted in the commit, nothing happens to
	   TO. If you want to have the file TO removed from the	repository
	   when	FROM is	deleted, set this option to a true value such as '1'.

	       UPDATE_CONF_FILE(
		   'conf/authz'	=> 'authz',
		   validator	=> ['/usr/local/bin/svnauthcheck'],
		   generator	=> ['/usr/local/bin/authz-expand-includes'],
		   actuator	=> ['/usr/local/bin/notify-auth-change'],
		   rotate	=> 2,
	       );

	       UPDATE_CONF_FILE(
		   'conf/svn-hooks.conf' => 'svn-hooks.conf',
		   validator	=> [qw(/usr/bin/perl -c)],
		   actuator	=> sub {
				       my ($contents, $file) = @_;
				       die "Can't use Gustavo here." if	$contents =~ /gustavo/;
				   },
		   rotate	=> 2,
	       );

	       UPDATE_CONF_FILE(
		   qr:/file(\n+)$:' => 'subdir/$1/file',
		   rotate	=> 2,
		   remove	=> 1,
	       );

AUTHOR
       Gustavo L. de M.	Chaves <gnustavo@cpan.org>

COPYRIGHT AND LICENSE
       This software is	copyright (c) 2016 by CPqD <www.cpqd.com.br>.

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

perl v5.24.1			  2016-11-10	 SVN::Hooks::UpdateConfFile(3)

NAME | VERSION | SYNOPSIS | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=SVN::Hooks::UpdateConfFile&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help