The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Pinto::Store::VCS::Svn - Store your Pinto repository with Subversion

VERSION

version 0.017

SYNOPSIS

Add this to your Pinto configuration (usually in ~/.pinto/config.ini):

  ; other global params up here...

  store   = Pinto::Store::VCS::Svn

  [Pinto::Store::VCS::Svn]

  ; Required.  URL of repository location where the mainline version will live
  trunk = http://my-repository/trunk/PINTO

  ; Optional.  URL of location where trunk will be copied
  tag   = http://my-repository/tags/PINTO-%Y%m%d.%H%M%S

And then run pinto as you normally would.

DESCRIPTION

Pinto::Store::VCS::Svn is a back-end for Pinto that stores the repository inside Subversion.

CONFIGURATION

These configuration parameters are in addition to those provided by Pinto. All configuration parameters should go in your pinto config file, which is usually located in ~/.pinto/config.ini.

trunk

(Required) The URL to the location in Subversion where you want the trunk (i.e. mainline) branch of your Pinto repository. If this location does not exist, it will be created for you. Each time you run pinto, the changes to your repository will be committed to this branch.

tag

(Optional) The URL of the location in your Subversion repository where you want to create a tag of the CPAN mirror. When pinto commits changes to the trunk, that URL will be tagged (i.e. copied) to the tag. If you do not specify tag then no tag is made.

In most situations, you'll want to keep multiple tags that represent the state of CPAN at a various points in time. The typical practice is to put a date stamp in the name of your tag. Therefore, you can embed any of the Date::Format conversion specifications in your URL and they will be expanded when the tag is constructed.

For example, if you had this in your ~/.pinto/config.ini:

 tag = http://my-company/svn/tags/PINTO-%y.%m.%d

and ran pinto mirror on June 17, 2011, then it would produce a tag at this URL:

 http://my-company/svn/tags/PINTO-11.06.17

Be sure to choose a date stamp with sufficient resolution for your needs. If you are only going to run pinto once a month, then you probably only need a year and month to distinguish your tag. But if you are going to run it several times a day, then you'll need day, hours and minutes (and possibly seconds) too.

And if you don't put any date stamp in your tag at all, then you're basically limited to running pinto only once, because you can't make the same tag more than once (unless you remove the previous tag by some other means).

CAVEATS

The svn program is required.

At present, you must have the binary svn client installed somewhere in your $PATH for this module to work. In future versions, we may try using SVN::Client or some other interface.

No built-in support for authentication.

All authentication is handled by the svn client. So you must have the credentials for your repository already cached. If you cannot or will not allow svn to cache your credentials, then this module will not work.

Subversion does not accurately manage time stamps.

This may fool Pinto into making an inaccurate mirror because it thinks your local copy is newer than the mirror. As long as you don't throw away your working copy, you shouldn't run into this problem. But I have a workaround planned for a future release.

AUTHOR

Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Imaginative Software Systems.

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