|
NAMESVN::Notify::Mirror - Keep a mirrored working copy of a repository pathSYNOPSISUse svnnotify in post-commit:svnnotify --repos-path "$1" --revision "$2" \ --handler Mirror --to "/path/to/www/htdocs" \ [--svn-binary /full/path/to/svn] \ [--tag-regex "regex"] [--minimal] or better yet, use SVN::Notify::Config for a more sophisticated setup: #!/usr/bin/perl -MSVN::Notify::Config=$0 --- #YAML:1.0 '': PATH: "/usr/bin:/usr/local/bin" 'path/in/repository': handler: Mirror minimal: 1 to: "/path/to/www/htdocs" 'some/other/path/in/repository': handler: Mirror to: "/path/to/remote/www/htdocs" 'some/project/tags': handler: Mirror to: "/path/to/another/dir" tag-regex: "TRUNK-" DESCRIPTIONKeep a directory in sync with a portion of a Subversion repository. Typically used to keep a development web server in sync with the changes made to the repository. This directory can either be on the same box as the repository itself, or it can be remote (via SSH connection).USAGEDepending on whether the target is a "Local Mirror" or a Remote Mirror, there are different options available. All options are available either as a commandline option to svnnotify or as a hash key in SVN::Notify::Config (see their respective documentation for more details).Common OptionsIn addition to all of the options available to svnnotify, there is a single global option that affects both "Local Mirror" and Remote Mirror targets:
Working Copy on MirrorBecause 'svn export' is not able to be consistently updated, the sync'd directory must be a full working copy, and if you are running Apache, you should add lines like the following to your Apache configuration file:# Disallow browsing of Subversion working copy # administrative directories. <DirectoryMatch "^/.*/\.svn/"> Order deny,allow Deny from all </DirectoryMatch> The files in the working copy must be writeable (preferrably owned) by the user identity executing the hook script (this is the user identity that is running Apache or svnserve respectively). Local MirrorUsed for directories local to the repository itself (NFS or other network mounted drives count). The only required options are:
Remote MirrorUsed for mirrors on some other box, e.g. a web server in a DMZ network. See SVN::Notify::Mirror::SSH or SVN::Notify::Mirror::Rsync for more details. All "ssh-*" options are now deprecated in the base class and support for them will be removed in the next major release. Please update your configurations (see SVN::Notify::Mirror::SSH for details).Methods of MirroringThere are two schemes to keep a directory synced to a path in the repository:
For the latter case, SVN::Notify::Mirror can be configured to monitor a path in the repository and only trigger an update when the path matches a specific regular expression, and do so by switching the mirrored path to the new tag.
PREREQUISITES (Optional and otherwise)The only mandatory prerequisite is SVN::Notify (obviously), but the presence of several other modules will enable other features:
If you install any of these modules after installing SVN::Notify::Mirror, those features will be available immediately (though you can rerun the install in order to see the tests). AUTHORJohn Peacock <jpeacock@cpan.org>COPYRIGHTCopyright (c) 2005-2008 John PeacockThis program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. SEE ALSOSVN::Notify, SVN::Notify::ConfigPOD ERRORSHey! The above document had some coding errors, which are explained below:
Visit the GSP FreeBSD Man Page Interface. |