0.044     2012-07-15 01:39:18 America/Los_Angeles

     Bug Fixes:

     The magic stack named '@' (meaning all stacks) did
     not work.

0.043     2012-06-19 10:47:15 America/Los_Angeles

     Bug Fixes:

     Prevent writing to closed handle, when running the install
     action via pinto remotely.

     Now requires Dist::Metadata 0.923 or newer, which indexes
     more like PAUSE does it.

     Other Stuff:

     Some minor performance optimizations, to reduce the number of
     trips to the database.

0.042     2012-05-17 21:55:19 America/Los_Angeles

     finally{...} doesn't seem to work properly on older perls, and
     this caused several test failures.  According to the perldelta,
     5.14 introduced several changes to exception handling.  So I've
     moved the exception handling into the catch{...} block.  I don't
     know why, but this seems to work better.
 
0.041     2012-05-15 11:13:27 America/Los_Angeles

     Important:
   
     There have been major changes to the interface and behavior of
     Pinto (read more below).  Beware this version of Pinto is NOT
     compatible with repositories created with any previous version of
     Pinto.  If you have an existing repository and you really, really
     need to preserve it, then contact me and I can work with you to
     develop a migration plan.  Also, many of the internal modules
     have been moved around, so I strongly suggest that you remove
     existing versions of all the Pinto libraries and scripts before
     installing a new one on top of it.

     New/Changed/Removed Features:

     Pinto now supports multiple indexes called "stacks".  So you
     could have one stack of dependencies for application X and a
     different stack for application Y (or one for development, one
     for production, etc).  Each stack can contain different modules
     and/or different versions of those modules.  It's like having
     several repositories in one.

     Stacks can be copied and merged, much like a version control
     system.  This allows you to experiment with new dependencies
     without impacting other stacks.  If you have multiple
     applications with different dependencies (or just different
     versions of them), this also gives you a way to gradually
     converge dependencies.  Likewise, it allows you to fork
     dependencies if two applications need to diverge in some way.

     The VCS integration has been removed.  Most of the people I've
     talked with did not find this feature particularly useful, since
     you can't really branch & merge a repository (the database is
     binary).  This was also the most rickety part of the system.

     The "pinto-admin" and "pinto-remote" applications have been
     consolidated into one application called "pinto".  It will use
     the appropriate backend (either Pinto or Pinto::Remote) depending
     on whether the repository root is a local directory or a remote
     URL.  However the backends ship separately from the application,
     so you must choose which to install (or you can choose both).

     The pinto application also has an "install" command, which
     functions as a stand-in for cpanm.  It is wired to pull
     distributions only from your repository, using the stack of your
     choice.

     Pinto no longer supports mirroring CPAN.  I've found that it is
     difficult to manage application dependencies in the context of an
     entire mirror of CPAN.  Most people only care about the stuff
     their application needs, so they don't really need a snapshot of
     the entire CPAN.  If you really want that, then CPAN::Mini does a
     fine job.

     Pinto no longer allows you to remove archives from the
     repository, so the "clean", "purge", and "remove" commands are
     gone.  Eventually, my goal is to make Pinto behave just like a
     VCS, where nothing is really deleted and you can always revert
     back to a previous version.  So you'll be able to take a
     distribution off of a stack, but the .tar.gz file never really
     goes away.

     Pinto no longer enforces any sort of permissions on package
     namespaces.  Previously, Pinto only allowed the original author
     to update a package (just as PAUSE does).  But the restriction
     was only advisory -- you could just bypass it by changing your
     author identity.  Now, Pinto doesn't even bother with that -- any
     user can upgrade any package.  All the activity is logged to a
     file so you can see who changed what, but Pinto expects you to be
     accountable for your actions.

     Pinto now tracks dependencies between the distributions within
     the repository.  So it can potentially tell you which
     distributions need to be tested after upgrading a module, or
     whether the stack actually contains sufficient modules to satisfy
     all the prerequisites for all the distributions in the stack.  I
     haven't yet written those commands, but the data is in there.

0.040_003 2012-05-04 21:38:07 America/Los_Angeles

     Fixed bug in 35-install.t that would cause the test to fail
     (instead of skipping) if cpanm was not installed.  Thanks
     Andreas!

     Switched to using File::NFSLock instead of Lockfile::Simple.  The
     latter uses some deprecated syntax that causes lots of ugly
     warnings on newer perls.

     Still alpha testing.

0.040_002 2012-05-04 16:19:11 America/Los_Angeles

     Added Action::Install.  Still alpha testing.

0.040_001 2012-05-01 13:12:34 America/Los_Angeles

     This is a developer release for alpha testing the stacks feature.

0.038     2012-04-16 18:14:57 America/Los_Angeles

     New Features:

     The "import" command will now import a particular distribution
     if you specify it using the right notation.  See POD for details
     (Steven Leung).

     Bug Fixes:

     The Git store would fail if you specified the --root as a
     relative path that contained any "../" updirs (William Wolf).

0.037     2012-04-10 19:57:09 America/Los_Angeles

     No code changes.  Just fixed dependency declarations.
     Thanks CPAN Testers!

0.036     2012-04-09 00:14:50 America/Los_Angeles

     New Features:

     Pinto now logs activity to $root_dir/.pinto/logs/pinto.log
     (Karen Etheridge).  You can set the logging level in the
     repository's config file.

     Other Stuff:

     A lot of files have been moved around in this release (and the
     last couple releases).  I suggest removing your current Pinto
     before installing this one, to avoid accumulating cruft.

0.035     2012-04-04 19:00:35 America/Los_Angeles

     New Features:

     The value for the --author option now defaults to the 'user'
     specified in your ~/.pause file.  If that file does not exist,
     then it still defaults to your current login username.

     Other Changes:

     All diagnostic messages from pinto-admin now go to STDERR
     rather than STDOUT.  So you can cleanly directy the output
     into a file (like with the `list` command).

     Refactored a lot of redundant code into roles that are shared
     with Pinto::Remote.  But if you're not looking at the Pinto
     internals, you won't notice it.

0.033     2012-03-15 06:55:39 America/Los_Angeles

     Bug Fixes:

     Corrected documentation about the environment variable
     controlling the default location of the repository.
     Thanks fibo.

     The index file is now properly updated after doing an
     import operation.  Thanks throughnothing.

0.032     2012-03-01 10:36:25 America/Los_Angeles

     Bug Fixes:

     Worked around a problem that caused the PAUSE indexer to
     reject the last release.

     Added an accurate line-count to the 02packages file so that
     cpan(1) doesn't complain about it.

0.031     2012-02-28 05:19:58 America/Los_Angeles

     Bug Fixes:

     Fixed bug in the create command.  Not sure how this ever
     worked before.

     New Features:

     The "add" command now recursively imports all the dependencies
     by default.  To disable this behavior use the --norecurse option.

0.030     2012-01-26 22:00:32 America/Los_Angeles

     The --repos option for pinto-admin has been officially 
     renamed to --root.  This was done to create a symmetrical
     API between Pinto and Pinto::Admin.  The old --repos option
     will *not* be supported for backward compatibility.

0.029     2011-12-15 00:24:11 America/Los_Angeles

     The 'list' command now has --index and --noindex options to
     filter the output to packages that are in the index, or not
     in the index, respectively.

     The 'list' command now has --pinned and --nopinned options to
     filter the output to packages that are pinned, or not pinned,
     respectively.

     The default output format for the 'list' command now includes a
     '+' character to indicate whether a package is pinned.

     Some improvements to Pinto::Store::VCS::Git, which allow you
     to place your Pinto repository anywhere inside a Git repository.
 
0.028     2011-12-12 01:22:02 America/Los_Angeles

     I discovered that Subversion 1.7 changed the working copy layout
     in a way that caused Pinto to run exponentially slower as the
     repository got bigger (like when mirroring the CPAN).  I've fixed
     this now.

     pinto-admin now has a 'statistics' command that will report
     some basic stats about your repository.  I plan to add more
     stats in the future.

     You can now store your repository with Git using either
     Pinto::Store::VCS::Git or Pinto::Store::VCS::Git::Remote.
     These are both experimental, so use with caution.

     Mirror actions are now a bit faster, espeically when you
     already have most of the distributions in the source
     repository.

     The VCS log message used for the commit is now also used
     as the message for the tag operation.

     Pinning a devel package is only allowed if this repository
     is configured to index devel packages.

0.027     2011-12-08 15:23:00 America/Los_Angeles

     The 'list' command now has options to filter the output
     to either packages or distributions that contain some
     substring.  This is not as powerful as a regex, and you
     can only filter on the package name or dist path.  But
     this will make things go much faster.

     Fixed numerous bugs in the VCS integration.  This was totally
     broken.  That's what I get for not writing regression tests
     in that area.

     Fixed compatibility issue with Pinto::Remote.

     Added or improved some log messages.

     Revised some documentation.

0.026     2011-12-07 11:47:27 America/Los_Angeles


     ===============================================================
     IMPORTANT: This version of Pinto is not compatible with
     repositories built with any prior version.  In theory, you can
     migrate your old repository with the right combination of
     pinto-admin and VCS commands.  If you really want to try
     migrating your old repository, please contact me for guidance.

     Otherwise, you'll have to create a new repository and 'add' each
     of your local distributions again.  If you have foreign
     distributions in your repository then you'll have to 'mirror'
     them again too, but you might not get exactly the same versions
     that you used to have (because they are no longer the 'latest'
     version on CPAN).

     I know this sucks, but it is definitely worth the upgrade.  This
     version of Pinto is faster, more reliable, and packed with new
     features.  And going forward, I'll be able to maintain backward
     compatibility or at least provide an automated migration path.
     ================================================================

     * New Features:

     Pinto now uses a SQLite database to store information.  This
     improves performance, reduces memory consumption, and ensures
     data integrity.  Pinto is single threaded and permits only one
     database connection at a time, so it is safe for NFS (or so I've
     been told by SQLite experts).

     Pinto now behaves more like PAUSE, and will accept distributions
     with overlapping packages.  As always, only the 'latest' version
     of a package appears in the index file.  And just like PAUSE,
     Pinto tries to figure out the lineage of packages (i.e.  which
     version came first, second, third, etc.) by looking at version
     numbers and file timestamps.  So you can throw a pile of archives
     at it without having to think about putting them in a certain
     order (See POD for details).  You can also remove a distribution,
     and the "prior" versions of its packages will automatically become
     the latest.

     A Pinto repository can now be used with the cpan[1] utility.  It
     should also work with cpanp[1], but I haven't tried it.  And of
     course it still works with cpanm[1].  However, Pinto does not
     provide a full 01mailrc.txt.gz or 03modlist.data.gz file.  So
     cpan[1] features that rely on those files may not work.

     Pinto can now pull foreign distributions from multiple
     repositories.  You can use this to fall back to another
     repository if one of them is offline (which sometimes happens
     with CPAN mirrors).  Or you can use this to create a network of
     repositories that may each have different sets of distributions.
     I'm not sure if this is actually a good idea, but we'll see.

     Pinto does the-right-thing with development distributions (See
     POD for details).  And each Pinto repository now has a 'devel'
     configuration parameter.  Setting this to a true value instructs
     Pinto to include development releases in the index.  The default
     is false.

     The 'create' command for pinto-admin now accepts options that set
     the parameters in the config file that is generated for the new
     repository.

     The 'list' command for pinto-admin now accepts a --format option
     that can be used to customize what/how information is displayed.

     The 'remove' command for pinto-admin now works for both foreign
     and local distributions.  However, there is a caveat when
     removing foreign distributions (See POD for details).

     The 'rebuild' command for pinto-admin now has a --recompute
     option that causes Pinto to recompute the 'latest' version
     of all the packages (See POD for details).

     pinto-admin now has a 'manual' command for displaying the full
     manual for a particular command.

     pinto-admin now has a 'version' command for displaying version
     information.

     pinto-admin now has a 'purge' command that removes everything
     from your repository.

     pinto-admin now has an experimental 'import' command that fetches
     a remote package or distribution (and its dependencies,
     recursively) and puts all of them in your local repository.

     pinto-admin now has the 'pin' and 'unpin' commands, which can be
     used to tie the index file to a specific version of a package.
     This lets you evolve your repository while keeping certain
     packages fixed.  Very cool!  See POD for details.

     Most of the pinto-admin commands now have aliases.  Thanks to the
     awesomeness of App::Cmd, you can say 'pinto-admin rm' instead of
     'pinto-admin remove'.  The aliases are listed in the manual for
     each command.

     * Other Changes:

     The config files for each Pinto repsoitory are now located in
     $REPOS/.pinto/config.

     The 'list' command for pinto-admin has been neutered.  You can no
     longer specify the --type or --indexed options.  However, the
     output does show whether the package is local/foreign and
     indexed/unindexed, so you can grep on that to narrow the results.
     I'm thinking of developing a query interface to let you select
     which packages/distributions you want to list.

     The VCS tagging mechanism has changed.  Instead of making a tag for
     every commit, a tag is made only when you specify the --tag option.
     You can still put date/time placeholders in your tag name.

     The 'noclobber' configuration setting has been removed, since it
     was never implemented anyway.

     The 'nocleanup' configuration setting is gone, and we no longer
     support automatic cleanup.  Instead, you have to run the 'clean'
     action separately.  You might want to setup a cron job for this.

     The 'update' command is now called 'mirror'.  I know, I keep
     flip-flopping on that.  But I think I've finally settled now.

     The --force option on the 'mirror' (formerly 'update') command is
     no longer supported.  I'm thinking of changing the meaning of
     "force" and might bring it back in a future release.

     pinto-admin is a little less noisy by default.  You can increase
     the verbosity by repeating the '-v' option up to three times.

     Now needs newer versions of Dist::Requires and
     Dist::Metadata.  Thanks CPAN Testers for shaking that out.

     Pinto->new() will now blow up if you specify a root_dir that
     doesn't actually look like a repository directory.  To be valid,
     it must have a database file, a modules directory, and an authors
     directory.

     Changed some log messages to be more helpful
     and/or less noisy.

     * Bug Fixes:

     Fixed bug where Pinto might blow up with 'too many args' error
     the first time you update from a CPAN mirror using the Svn store.

     Fixed broken code (e.g. calling undefined methods) in several
     places.  Added more regression testing to catch this stuff.

     Prevent uninitialized warning when using the 'list' command.


0.025_004 2011-12-06 21:11:00 America/Los_Angeles
0.025_003 2011-12-03 04:12:56 America/Los_Angeles
0.025_002 2011-12-02 04:39:19 America/Los_Angeles
0.025_001 2011-12-02 03:18:26 America/Los_Angeles

     Net changes aggregated above in 0.026

0.024     2011-09-01 15:23:48 America/Los_Angeles

     Added a "version" command to pinto-admin

     General code refactoring

     No interface changes

0.023     2011-08-31 14:18:49 America/Los_Angeles

     * Interface Changes:

     The "remove" operation now works on distribution names, rather
     than package names.  You must specify the full name of the
     distribution, including version number and extension.

     * Other Good Stuff:

     Wrote the manuals for each of the pinto-admin commands.
     Say `pinto-admin COMMAND --man` to see them.

0.022     2011-08-31 01:31:04 America/Los_Angeles

     * Interface Changes:

     You no longer need to specify the Subversion trunk in your
     pinto.ini (if you were using Pinto::Store::VCS::Svn).  The
     location of your Pinto repository in subversion is implicit in
     the `svn info` of the working copy.  Secondly, the "create"
     action no longer takes care of making a location in Subversion
     for you.  So you now have to do a little more work to setup Pinto
     with Subversion.  See the POD in Pinto::Store::VCS::Svn for
     step-by-step instructions.

     You can no longer specify a VCS tag in your pinto.ini.  Making
     a tag after every commit doesn't make sense.  So now, a tag
     is only made if you explicitly set a --tag on the command line.
     Likewise, the --notag command line switch has been removed,
     since the absence of a --tag is equivalent to --notag.

     * Bug Fixes:

     The "update" command was broken, following rename from "mirror".
     Doh!

0.021     2011-08-30 01:16:55 America/Los_Angeles

     * Interface Changes:

     The "mirror" command is now called "update".  I feel this more
     accurately reflects what is going on, since a Pinto repository
     isn't really a "mirror" of anything.
   
     * Bug Fixes:

     Fixed some bugs in the VCS tagging logic.

     Fixed behavior when running under cron.

0.020     2011-08-28 20:40:43 America/Los_Angeles

     * Enhancements:

     Added the "rebuild" command, which reconstructs the master index
     from the current local and mirrored indexes.  This is useful if
     your master index somehow gets screwed.  Note this is not the
     same as actually re-indexing the distributions (that's a feature
     I might add later).

     All commands for pinto-admin[1] now support a --man option, which
     shows you the full documentation for a commmand.  But at this
     point, I haven't written the documentation for all the commands.

     Several of the commands for pinto-admin[1] now support a --tag
     option that allows you to specify an alternative tag.  The
     semantics of the tag will depend on which type of VCS you are
     using.  Likewise, you can now specify --notag to disable tagging
     completely.
    

0.019     2011-08-24 04:09:41 America/Los_Angeles

     * Bug Fixes:

     The 'add' and 'remove' commands for pinto-admin were not reading
     arguments from STDIN properly.

     All svn commands would fail when running under pinto-server.
     This was due to some strage behavior in IPC::Run that I can't
     explain.

0.018     2011-08-24 01:45:21 America/Los_Angeles

     Now using IPC::Run to handle external commands (like svn).
     IPC::Run seems to behave better when running in a server
     environment like pinto-server (via Dancer).

0.017     2011-08-24 00:50:09 America/Los_Angeles

    * Interface Changes:

    pinto-admin[1] is now zero-conf (at least, by default).  However,
    you must now specify the --repos for every command.  Also, some of
    the options for pinto-admin have been removed for safety, and are
    now in the repository-specific configuration file (see below).
    This helps to deter you from doing things that contradict the
    usual behavior of your repository.

    Each Pinto repository now has its own configuration file, which
    governs its basic behavior.  The configuration file is generated
    with default values when you run the "create" command.  This
    allows you set up multiple repositories, each with a different
    behavior and VCS store.

    * Enhancements:

    The "add" and "remove" commands for pinto-admin[1] can now read
    arguments from STDIN.  When doing so, it filters out things that
    look like comments and blank lines.  This makes it easy to pipe in
    the output from a find[1] or dzil[1] command.

    You can also specify arguments to the "add" command as URLs,
    and Pinto will fetch them for you. (Suggested by Tim Bunce).

    The "list" command now accepts a --type option, which will show
    you either all packages, only local packages, only foreign
    packages, or only local packages that block a foreign package.
    (suggested by George Hartzell and Meg Green).

    The "add", "remove", and "mirror" actions now accept a --message
    option, which will be prepended to the VCS commit log that Pinto
    generates (suggested by Jan Vogel).

    Added "nocolor" command line option.

0.016     2011-08-18 02:00:12 America/Los_Angeles

    Removed bin/pinto-client.  That wasn't supposed to be in there,
    damnit!  Look for the Pinto-Remote distribution instead.

0.015     2011-08-18 01:54:39 America/Los_Angeles

    * No interface changes or bug fixes.

    * Internal Changes:

    Improved exception handling.

    Pinto now uses a lock file to synchronize concurrent actions in
    the repository.  Only one actor is allowed to operate in a given
    repository at a time.  Others have to wait until they can get the
    lock, or timeout after about 60 seconds.

0.014     2011-08-17 16:09:48 America/Los_Angeles

    * No interface changes or bug fixes.

    * Internal Changes:

    Several modules have been moved out to the Pinto-Common
    distribution.  This is to allow sharing between Pinto,
    Pinto::Server, and Pinto::Remote without requiring direct
    dependency on all of Pinto (including it's dependencies).

0.012     2011-08-17 09:10:25 America/Los_Angeles

    * Bug Fixes:

    Pinto::TestLogger didn't end with a true value.  Thank you, CPAN
    Testers!

    * Internal Changes:

    Switched from IPC::Cmd to Proc::Reliable for running shell
    commands. IPC::Cmd seems to do funky things with STDIN
    and STDOUT that don't set well with CGI.

    You can specify an output filehandle or a buffer (as a scalar
    reference) where you want the output from Pinto::list() to
    go.

    The output from the List action contains the name, version,
    and location in each package, rather than just the name.  This
    was a regression in the last version.

    * Other Changes:

    pinto-server[1], pinto-client[1], and all the Pinto::Server::*
    modules have been pulled out into a separate distribtuion,
    which will be released to CPAN shortly.

0.011     2011-08-14 21:11:47 America/Los_Angeles

    * Bug Fixes:

    Fixed our call to File::Copy::copy() to accommodate older versions
    which did not handle Path::Class objects properly.  Thank you,
    CPAN Testers!

0.010     2011-08-14 13:29:23 America/Los_Angeles

    * Bug Fixes:

    Fixed test failures that I introduced by renaming some classes in
    the last release.

0.009     2011-08-12 17:50:28 America/Los_Angeles

    * Interface changes:

    pinto[1] is now called pinto-admin[1].  It still has all the same
    options and arguments.  Likewise, App::Pinto is now
    App::Pinto::Admin.

    With pinto-admin, the "mirror" parameter is now called "source".
    This reflects the fact that your dists don't necessarily have to
    come from a CPAN mirror.  They just have to come from some place
    that conforms to the CPAN structure.  Do not confuse this with 
    the "mirror" command, which still does actually mirror the
    aforementioned "source".

    * Other changes:

    Revised documentation.

    Added some basic functional tests.

    Created pinto-server and pinto-client, for using Pinto across a
    nework. These are still very experimental.

    Once again, a lot of the internals have been rewritten.  But the
    guts of Pinto are all private (for now), so you shouldn't really
    care.

0.008     2011-08-09 14:47:02 America/Los_Angeles

    * Interface changes:

    The 'author' parameter is now entirely optional.  It defaults to
    your shell username, if we can figure that out.  If not, then an
    exception is thrown, and you'll have to set the 'author' parameter
    explicitly.

    pinto[1] now has --notag, --nocommit, and --noinit options.  All
    these can also be set in your configuration file.  See the
    pinto[1] documentation for details.

    * Other changes:

    The internals of Pinto have been substantially rewritten to
    improve performance and readability of the code.  The Pinto API is
    still considered alpha, and subject to change.

0.007     2011-08-04 08:04:27 America/Los_Angeles

    * Interface Changes:

    A config file for pinto[1] is no longer mandatory. If you do not
    have one, then you'll have to specify all required parameters on
    the command line (this is usually just the '--local' and sometimes
    the '--author' options).  If you don't specify these, you'll get a
    really ugly stack trace from Moose.  I'll look into making these
    error messages prettier in a future release.  Thanks to b.jakubski
    for suggesting this change.

    * Bug Fixes:

    RT #70015: Can't create repository.  The 'create' command failed
    because the 02packages file could not be read.  This has now been
    remedied.

    * Other Changes:
    
    Edited documenation for pinto[1]
     
0.006     2011-08-04 00:52:22 America/Los_Angeles

    More documentation edits.  No code changes.

0.005     2011-08-04 00:43:34 America/Los_Angeles

    Brought the documentation for pinto[1] up to date with the 
    actual API.

0.004     2011-08-04 00:23:23 America/Los_Angeles

    Default log level is now 1 (info).

    pinto[1] now exits with status 0 if successful.

    Improved some log messages.

0.003     2011-08-03 22:59:10 America/Los_Angeles

    Major overhaul of internals.  But the pinto[1] command line
    interface is mostly the same.

0.002     2011-07-26 17:20:46 America/Los_Angeles

    Corrected default path to the Pinto configuration file.

    Expanded POD for pinto[1]

0.001     2011-07-26 14:17:06 America/Los_Angeles

    Initial release.