0.14      2017-08-06 00:09:07-07:00 America/Los_Angeles

      [BUG FIXES]

      - Fixed argument processing in the `reset` and `revert` commands.

      - Fixed some typos in the documentation.


      - Upgraded to latest Module::CoreList to support newer perls.

      - Switched to an internal fork of Term::EditorEdit to avoid
        unwanted dependency on deprecated module Any::Moose

      - Switched to using MakeMaker instead of ModuleBuild, now that the later
        is no longer in core. I recommend installing with UNINST=1 to
        clean up the cruft from older releases.

0.13      2017-08-05 22:46:26-07:00 America/Los_Angeles


0.12      2016-07-25 20:58:40-07:00 America/Los_Angeles

      [BUG FIXES]

      - The 02packages index is now sorted case-insensitively, just like
        PAUSE. Fixes GH #226. Thanks @miyagawa

      - Now requires Module::Metadata 1.000031, fixing GH #204.

      - Now requires latest Module::CoreList (currently 5.20160720)
        to support latest perl releases.

0.11_01   2016-07-16 21:37:51-07:00 America/Los_Angeles


      - Changes consolidated above under version 0.12

0.11      2015-08-12 01:25:13-07:00 America/Los_Angeles

      [BUG FIXES]

      - Workaround conflict between version and EU::MM::version. GH #204.

0.09999   2015-06-13 22:13:46-07:00 America/Los_Angeles

      [BUG FIXES]

      - Fixed tests that failed in environments using an HTTP proxy. GH #202.

0.09998   2015-06-10 00:28:12-07:00 America/Los_Angeles


      Several of the changes in this release were contributed by Chris Kirke as
      part of the CPAN Pull Request Challenge, organized by Neil Bowers. I am
      sincerely grateful for their efforts.

      [BUG FIXES]

      - The t/, xt/, inc, and local/ directories are always ignored when
        indexing a distribution. This is exactly what PAUSE does.

      - Fixed test failures caused by the presence of a ~/.pause file. GH #172.


      - The "look" command will unpack a distribution into a temporary directory
      and spawn a subshell in that location.  Contributed by Kal Hodgson.


      - The "diff" command now has a --format option for more precise control
      of the output. Contributed by Florian Ragwitz.

      - A stale repository lockfile can be stollen if the PINTO_STALE_LOCKFILE_TIMEOUT
      environment variable is set. Contributed by Chris Kirke. GH #209.

      - Operations with the --dry-run option are now allowed on locked stacks.
      Contributed by Chris Kirke. GH #207.

      - Improved error messages when a repository is not in a sane state.
      Contributed by Chris Kirke. GH #199.

      - Improved latency from Pinto::Server by autoflushing the output.


      - Several of the prerequisite modules have been upgraded to newer versions
      to take advantage of recent improvements, and to support Perl 5.22.0. If
      you have installed Pinto as a stand-alone application as described in
      Pinto::Manual::Installing then your environment will be insulated from these

0.09996   2014-11-04 10:54:11-08:00 America/Los_Angeles


      - Upgraded to latest version of Module::CoreList, so we can support
      latest versions of perl.

      - Tests will no longer clobber ~/.cpanm (GH #170). Thanks to Karen
      Etheridge for pointing this out.

0.09995   2014-08-19 18:27:23 America/Los_Angeles


      - Fixed critical security hole in Pinto::Server. If you are using pintod,
      please upgrade now! Thanks to Aran Deltac for reporting this.


      - Improved error handling in Pinto::Remote so you get pretty colored
      errors instead of big ugly stack traces, just like you do when using
      a local repository.


      - Demoted some warnings to notifications, for less noisy output.
      Use the --verbose option to see more diagnostic output.

0.09993   2014-05-02 17:43:41 America/Los_Angeles


      - The protocol used to communicate with a remote Pinto repository is now
      versioned with media types via the "Accept" header.  So if you upgrade
      to this version of pinto, you'll also need to upgrade pintod to this same
      version.  Going forward, the protocol will be versioned so that we
      can potentially support different versions of the client and server at
      the same time.  But for the time being, you'll get an exception telling
      you whether to upgrade your client (pinto) or the server (pintod).

      - The PINTO_COLORS and PINTO_COLOURS environment variables are deprecated
      in favor of PINTO_PALETTE.  You can still use the old names for now, but
      they will be removed in a future release.

      - When using the --all option with the "list" command, the default format
      shows the pin status as "?" (i.e. indeterminable) instead of showing the
      main module status.

      [BUG FIXES]

      - Colorization is now disabled by default when the output is being piped or
      redirected to a file.  This improves interoperability with tools like grep,
      sort, etc.  To force colorization, use the --color or --colour option.
      Fixes GH #155. Thanks @mar-kolya.

      - The "roots" will now include test and develop prereqs, since Pinto has no
      way of knowing how those distributions relate to your application. This
      fixes GH #158. Thanks @mar-kolya.

     - Fixed timezone.t test which would fail in some cases, ostensibly
     because the test environment would not allow us to open sockets
     (probably due to security reasons).  Thanks CPAN Testers.


      - When using the "add" command, the paths to the local archives can now be
      expressed using file:/// URLs.

      - The PINTO_PAGER_OPTIONS environment variable can now be used to pass specific
      options to your pager when using it with pinto.  For example, to tell `less`
      to display colors.


      - Revised the Tutorial and QuickStart documentation.

0.09992_02 2014-04-29 14:22:29 America/Los_Angeles
0.09992_01 2014-04-28 10:31:21 America/Los_Angeles

      - Changes consolidated above under version 0.09993$

0.09992   2014-04-23 15:14:50 America/Los_Angeles

      [BUG FIXES]

      - Fixed extra newlines that were inserted into large responses
      from Pinto::Server.  Closes GH #154.  Thanks @mar-kolya.

0.09991   2014-04-05 06:28:18 America/Denver

      [BUG FIXES]

      - Fixed timezone handling for remote users.  But it only applies
      to new revisions.  Old ones will probably still be reported in
      the wrong timezone (unless you happen to be in the right one).

0.0999    2014-04-03 22:53:31 America/Los_Angeles


      - Internal API changes only. Now all the attributes that were named
      "from_stack" are named "stack". This makes the API more consistent, since
      the "stack" is almost always the thing that is in play.


      - No new features, enhancements, or bug fixes.

0.0998    2014-03-31 15:27:14 America/Los_Angeles

      [BUG FIXES]

      - Fixed behavior and error message when the repository is not
      writable by the user.  Fixes GH #150.  Thanks @bkysela.

0.0997    2014-03-23 20:36:48 America/Los_Angeles

      [BUG FIXES]

      - Fixed behavior of the --force flag on the new "update" command.
      It now applies to all packages that might be updated, not just the
      targets list on the command line.


      - When generating the title for the log message, only the targets
      at the top of the dependency graph are listed, and only if they
      (or one of their prerequisites) were actually affected by the
      operation.  In effect, redundant and prereq targets are therefore
      excluded from the message. This attempts to fix GH #86. Thanks @akarelas.

0.0996    2014-03-22 21:12:29 America/Los_Angeles

      [BUG FIXES]

      - Added a workaround for Net::LibIDN, which was not being properly
      indexed.  If you experienced this problem, just `pull Net::LibIDN`
      to correct it.  This fixed GH #149.  Thanks @perlpunk and @malbin.

0.0995    2014-03-18 21:12:56 America/Los_Angeles


      - The argument for the "init" command is now the repository root
      instead of the stack name.  This makes the interface more convenient
      and more familiar to git users.  You can still specify the root
      using the global --root option if you like.  And the initial stack
      name can be set with the --stack option.


      - All the new command listed below are experimental.  The interface and
      behavior is subject to change.  See the POD in each command for details.

      - The "update" command pulls the latest version of packages.  You can
      ask to update all packages or just specific ones.

      - The "merge" command joins the history of two stacks together.  At the
      moment, it is only capable of fast-forward merges.

      - The "reset" command moves the head of the stack to a prior revision,
      thereby discarding all subsequent revisions.

      - The "revert" command creates a new revision that matches the state at
      a prior revision.


      - The index file for each stack now contains artificial records for
      each module that is included in the target version of perl.  This
      allows installers to cope with requests to install core modules,
      which normally aren't present in a Pinto repository.  If you pull
      a dual-life module, it will mask the artifical records.  The
      artifical records never appear in a stack diff or listing.

      NOTE: This change will take effect the next time you perform
      any command that modifies the state of the stack.

      [BUG FIXES]

      - The "install" command threw an exception with a misleading error
      message when using the -m option without --do-pull.  Now, both the
      -m and -M options are silently ignored when --do-pull is not used.
      Fixes GH #145 (thanks, @hartzell)

0.0994_04 2014-03-17 21:33:08 America/Los_Angeles
0.0994_03 2014-03-16 00:38:40 America/Los_Angeles
0.0994_02 2014-03-15 23:07:23 America/Los_Angeles
0.0994_01 2014-03-05 01:04:46 America/Los_Angeles

      - Changes consolidated above under version 0.0995

0.0994    2014-03-01 16:04:28 America/Los_Angeles


      - Improved the locking mechanism so concurrent read operations are
        sometimes possible, especially during the "install" command.  This
        fixes GH #142.

0.0993    2014-02-23 14:03:28 America/Los_Angeles


      - Pinto no longer sets the default port when connecting to a remote
      repository.  So in most cases, you'll have to explicitly add the port
      number to the URI given as the --root.  The default port that "pintod"
      listens on is 3111.  But if you're running "pintod" behind another server
      (like Apache or Nginx) then you can probably omit the port number and
      Pinto will use the default port that is appropriate for the scheme.
      Closes GH #136.  Thanks @spacebat.


      - When the repository is a local directory, it can also be expressed
      using a file:// URI.  This applies to both the --root option and the
      PINTO_REPOSITORY_ROOT environment variable. Fixes GH #128.

0.0992    2014-02-10 02:01:18 America/Los_Angeles


      - The "list" command now has a --all option that causes it to list
      every package in every distribution in the repository, including past
      releases and distributions that are not currently registered on any
      stack.  When using the --all option, the output includes two extra flags:
      "m" means that the package is considered to be the main module in the
      distribution. "x" means that the package can be included in the index.
      For both of these, the flags will appear as "-" when they are false.

      - The --packages, --distributions, and --authors filtering options on
      the "list" command are now treated as regular expressions.  Take care
      to quote them if you use any special shell metacharacters.

      [BUG FIXES]

      - Fixed regression in the "pin", "unpin", and "unregister" commands
      which resulted in a warning from DBIx::Class about returning multiple
      rows for a find() query.

0.0991    2014-01-31 17:19:17 America/Los_Angeles


      - The --skip-missing-prerequisites option has been replaced with two
      separate options: 1)  --skip-missing-prerequisite (without the final "s")
      requires you to specify the name of the packages you want to skip.  This
      option can be repeated.  2) --skip-all-missing-prerequisites does not
      require an argument and causes Pinto to skip all missing prereqs.  These
      options can be abbreviated as -k and -K respectively.

0.099     2014-01-28 12:30:49 America/Los_Angeles


      - The logic that Pinto uses to construct the index has changed.   The
      index will now include packages only if they are contained in a file with a
      matching name.  For example, Foo::Bar must be in a file called Bar.pm.  So
      in effect, Pinto will only index packages that can be use'd or require'd and
      thus form a dependency.  This makes it more of a "module" index rather than
      a pure "package" index like PAUSE.  But Pinto has never promised to index
      exactly like PAUSE anyway.  The benefit is that it also fixes the problem of
      Pinto indexing packages that it shouldn't.

      - The aforementioned changes to the index logic will only apply when a
      distribution is pulled to a stack where it isn't already registered.
      Existing indexes will not spontaneously change just by upgrading Pinto.  If
      you wish to apply the new index logic to a distribution that already lives
      in a certain stack, first use the "unregister" command to remove it from
      the stack and then use the "register" command to bring it back with the
      new logic.


      - For repositories that prohibit intermingled distributions in the index
      (which is the default) the registration process has been optimized because we
      can assume that all packages in the distribution are in the index.  In some
      cases, this can make the "pull" and "add" commands much faster, especially
      for distributions that contain a large number of packages.

      [BUG FIXES]

      - When deciding if a prequisite is satisfied by the perl core, Pinto now
      regards a package that is marked as deprecated in the target perl version
      as if it has already been removed, thus causing Pinto to pull the prereq.
      This makes Pinto consistent with the behavior of cpanm.

0.098_01  2014-01-28 01:43:19 America/Los_Angeles

      - Changes consolidated above under version 0.099

0.098     2014-01-27 16:49:14 America/Los_Angeles


      - This release contains a lot of new features.  I strongly recommend
      reading the manual pages for the "pull", "add", "log",  and "diff"
      commands as well as "pinto" itself for further explanation of the
      enhancements mentioned below.

      - Many of the new features in this release were financed by the Perl
      community through a crowdfunding campaign.  Thank you for your support.
      Go to http://tinyurl.com/gopinto to see how it all happened.


      - Pinto can now use a web service provided by stratopan.com to locate
      upstream packages and distributions.  This can reduce memory consumption
      during the "pull" and "add" commands by about 50%.  And for distributions
      with few dependencies, it can increase the speed of those commands by as
      much as 300%.  This feature will be enabled by default for new
      repositories. For existing repositories it must be enabled manually by
      adding "http://cpan.stratopan.com" as the (usually first) upstream
      source in your repository configuration file.

      - The "pull" command can now fetch a precise version of a package using
      a version specification string such as "Moose==1.34" or "Plack>=2,!=4".
      This means you can quickly build a repository with your current
      depedencies and you only need to know the package name and version.
      This feature will be enabled by default for new repositories.  For
      existing repositories it must be enabled manually by adding
      "http://cpan.stratopan.com" as the (usually first) upstream source
      in your repository configuration file.

      - The "pull" and "add" commands now have a --skip-missing-prerequisites
      flag that causes it to skip (but warn about) any prerequisite packages that
      it cannot satisfy.  You can use it to specify precisely which packages to
      skip, or to skip all unsatisfiable packages. This option only has effect
      when recursively pulling prerequisites.

      - When using the --dry-run option, a diff report will be displayed,
      showing all the changes that would have been made.  If there were no
      changes, nothing is shown.

      - The diff reports now default to a concise format which only lists
      the distributions that have changed in the index rather than each

      - All commands that show diff reports now have a --diff-style option
      that controls whether to display the concise or detailed report.  You
      can also set the default style using the PINTO_DIFF_STYLE environment

      - The "log" command now has a --with-diffs (or -d) option that causes
      it to also display the diff from the previous revision.

      - Pinto can now handle META files that contain prerequisites with
      version ranges such as ">4, !=5, <=7".  These are currently used by a
      handful of distributions on CPAN, and they are gradually becoming more
      common.  Fixes GH #127.

      [BUG FIXES]

      - The "roots" command was returning way too many distributions
      because it wasn't examining all the indirect dependencies.

      - Fixed when pulling a precise package target (e.g. Foo::Bar==1.0)
      that existed in a distribution that you already had.

0.097_04  2014-01-25 15:12:31 America/Los_Angeles
0.097_03  2014-01-23 13:07:22 America/Los_Angeles
0.097_02  2014-01-23 00:37:04 America/Los_Angeles
0.097_01  2014-01-17 12:46:28 America/Los_Angeles

      - Changes consolidated above under version 0.098

0.097     2014-01-07 20:53:29 America/Los_Angeles

      [BUG FIXES]

      - Fixed compatibility with the exception objects thrown by the
      latest version of Moose.  However, Pinto itself does not require
      the latest version of Moose.

0.096     2014-01-07 10:32:19 America/Los_Angeles


      - The exit status of the "list" command will now be non-zero if
      you specify any search criteria and no matches are found.  This
      follows the behavior of the Unix "ls" command.

      [BUG FIXES]

      - Now requires Module::CoreList 3.03 or newer.

0.095     2013-12-22 23:38:28 America/Los_Angeles

      [BUG FIXES]

      - Fixed bug in the new "roots" command that caused it to report
      far fewer distributions than it should.


      - A warning is emitted if you try to pull or add a Bundle
      distribution.  Pinto does not know how to automatically determine
      prerequisites for a Bundle.

      - A better error message is given when repository is not writable.
      Previously, you were (incorrectly) told that the repository was

0.094     2013-12-22 00:36:27 America/Los_Angeles


      - When pulling or adding a distribution which contains packages that
      partially overlap with an existing distribution on the stack, then
      all packages from the existing distribution are removed from the
      stack, not just the overlapping ones.  This means it is impossible
      for the stack to contain only *some* of the packages from any

      In nearly all cases, this is what you want because you never want
      to end up with an installation that has some packages from one
      distribution and some packages from another.  If you really want
      your stack to contain the packages from both distributions like
      the PAUSE index does, then Pinto probably isn't the right tool
      for you.


      - The "roots" command will list all the distributions that are
      the root ancestors of the dependency graph which includes all
      distributions in the stack.  This command can be used to install
      every distribution in the stack in one shot.  There are some
      caveats though.  See the documentation for details.

0.093     2013-12-21 16:24:39 America/Los_Angeles


      - The "add" and "pull" commands now have both --no-recurse and --recurse
      options.  This allows you to turn recursion off OR on, depending on
      the default setting for the repository (see more about that under
      ENHANCEMENTS).  However, the -n shortcut for --no-recurse is no
      longer available.


      - The pinto.ini configuration file may now contain a "recurse"
      parameter that determines the default recursion behavior for
      the "pull" and "add" commands.  Setting it to 1 means those
      commands are recursive by default.  Setting it to 0 means
      those commands are not recursive by default.  Either way,
      commands can always override that parameter using either the
      --recurse or --no-recurse switches.

      - pinto now falls back to using nano, pico, or vi if none of the
      usual environment variables for controlling the editor are set.
      This fixes #119.  Thanks @borisdaeppen for the suggestion.

      - The distributions listed in the generated title of the commit
      message will now be sorted and deduplicated.

0.092     2013-11-20 11:07:50 America/Los_Angeles


      - Periods are now allowed in stack names, user names, and
      property names.  Note that author ids are still limited to
      uppercase letters and numbers, to be consistent with PAUSE.

0.091     2013-10-25 12:09:52 America/Los_Angeles

      [BUG FIXES]

      - pinto now accepts remote repository addresses that use SSL
      (i.e. those starting with "https://").  This fixes #123.


      - Numerous spelling corrections and documentation improvements.
      Big thanks to David Steinbrunner and Boris D├Ąppen.

0.090     2013-08-23 14:41:34 America/Los_Angeles


      - None.


      - Now requires version 0.010 Package::Locator, which respects your
       environment variables for user agent proxy settings.  This fixes #111.

0.089     2013-08-19 13:03:26 America/Los_Angeles


     - None.


     - Added Copyright declarations to files in etc/ so the Debian
      packagers can avoid legal hassles when redistributing this code.

     - Added an =encoding command to all POD.  This should fix
      whatever caused MetaCPAN to reject the last release of
      Pinto. (Thanks rwstauner & oalders).

     - Reformatted this change log to conform to the
       CPAN::Changes::Spec (Thanks omega).

0.088     2013-08-15 10:49:36 America/Los_Angeles


     - Both the "pull" and "add" commands will no longer fetch
      development prerequisites by default.  If you want to have them,
      then add the --with-development-prerequisites (or --wd) option.


     - The "add" command now has an experimental --no-index option to
      exclude certain packages from the index.  This is useful when
      Pinto finds packages in your distribution that it should not.
      Thanks to Todd Chapman for the great suggestion.

     - The "diff" command now accepts revision IDs as arguments, so
      you can compare any two arbitrary revisions.  Revision IDs can
      be truncated to uniqueness.  This feature was generously funded
      by a grant from TPF.

     - The "new" command now accepts a --target-perl-version option to
      set the target perl version of the new stack.  This affects how
      Pinto decided if a prerequisite is satisfied by the core.  If
      you do not specify the --target-perl-version, then it defaults
      the global value that is set in the repository configuration


     - Improved the output from the "manual" command.  Thanks to Tommy

     - Optimized some queries to make it faster to register packages
      on a stack.  In the best cases, performance has improved by
      about 150%.  But in the average case, the limiting factor is
      fetching and unpacking the upstream distribution, so you'll only
      see a slight improvement there.

     - If your username contains non-alphanumeric characters, they
      will be stripped out when used as your author identity.  This is
      because the CPAN toolchain requires author ids to be
      alphanumeric.  Thanks to @chiselwright and @cebjyre.

     - The "statistics" command now accepts a stack name, so you can
      see the figures for any stack in the respository, not just the
      default stack.  This was a silly omission.  I don't know why I
      left it out.

     [BUG FIXES]

     - You can now edit the commit message when pinto is reading input
      from a file or pipe, as long as STDOUT is connected to a
      terminal.  You can always just use the -m or -M options if you
      don't want to edit the message.

     - You can now change only the letter case when renaming a stack,
      even on case-insensitive filesystems.  So you can change "foo"
      to "FOO".  Previously, you had to change the name entirely, and
      then rename it again to the desired case.


     - Pinto no longers stores the file path and SHA digest of every
      package it sees in the META, since many distributions on CPAN
      don't have the right paths in there anyway.  This allows Pinto
      to index some (technically broken) distributions that it
      otherwise couldn't.  Pinto was never really using this
      information anyway, and it will probably be removed from the
      schema entirely in the next major upgrade cycle.

0.087_05  2013-07-29 23:03:41 America/Los_Angeles
0.087_04  2013-07-26 20:11:14 America/Los_Angeles
0.087_03  2013-07-21 01:16:50 America/Los_Angeles
0.087_02  2013-07-16 02:12:40 America/Los_Angeles
0.087_01  2013-07-09 01:06:47 America/Los_Angeles


     - Changes consolidated above under version 0.088.

0.087     2013-06-19 14:47:01 America/Los_Angeles


     - When pulling, Pinto now takes the first satisfactory package
      that it finds among the upstream repositories, rather than
      taking the latest one.  This only matters if you specify
      multiple upstream repositories. To get the old behavior, use the
      new --cascade option on the "pull" and "add" commands.  Thanks
      @hesco for helping me sort this out.

     - The "version" command has been removed.  Now that all Pinto
      components ship together, they all have the same version number.
      So there is no need for a special version command.  If you want
      to know what version of pinto you have, just use the --version

     - Author IDs must now match /^[A-Z]{2}[-A-Z0-9]*$/.  In other
      words, two ASCII letters followed by zero or more ASCII letters,
      digits, or hyphens.  If you use lowercase letters, they will be
      automatically forced to uppercase for you.  This was done
      because cpanm relies on author IDs following the PAUSE
      convention.  I had hoped that Pinto could be more liberal about
      author IDs, but it seems we must conform so that we can
      cooperate with the rest of the toolchain.

     - The --no-history and --allow-duplicates repository
      configuration parameters are no longer supported.  I had created
      those so you could try mirroring CPAN with a Pinto repository.
      But I have decided that use case is out of scope for Pinto.  If
      you realy want a mirror of CPAN, use CPAN::Mini or rsync.


     - The names of those kind souls who generously helped finance
      Pinto through the crowdfunding campaing on Crowdtilt are now
      listed in Pinto::Manual::Thanks.  There is also a related Easter
      egg among the pinto(1) commands -- see if you can find it!
      See http://tinyurl.com/gopinto to learn more about the campaign.

     - Pinto::Server (a.k.a. pintod) will abort the action if it
      looses the connection with the client.  So, for example, you can
      press Ctrl-C in the middle of pulling a long chain of
      dependencies into a remote repository and the server will
      immediately stop and roll back the entire transaction.

     - The progress meter is now visible when using a remote
      repository.  The progress meter is never shown when --verbose or
      --quiet is set, or when STDERR is not connected to a terminal.

     - The "init" command now has a --target-perl-version switch that
      sets the default target_perl_version property for all new
      stacks.  This is handy if you know that all stacks will be
      targeting a perl that is different from the one you are using to
      run pinto.

     [BUG FIXES]

     - The "install" command can now be used on a locked stack, but
     only if the --do-pull option is not given.  If you want to pull
     packges while installing, then you must unlock the stack first.
     Thanks Jeremy Marshal.

     - The "install" command can now be used on a remote repository
      that has basic HTTP authentication enabled.  Beware that cpanm
      does not sanitize passwords from its log messages.  I'm working
      with miyagawa to fix that.

     - Pinto::Server now cleans up child procs.  No more zombies!

     - Cleaned up some extraneous dependencies.

     - Fixed several typos in the documentation.

0.086     2013-06-18 02:45:38 America/Los_Angeles
0.085     2013-06-18 02:45:38 America/Los_Angeles


      - Changes re-consolidated above under version 0.087.

0.084_02  2013-06-16 20:54:06 America/Los_Angeles
0.084_01  2013-06-16 00:53:47 America/Los_Angeles


     - Changes consolidated above under version 0.087.

0.084     2013-05-14 17:24:22 America/Los_Angeles


     - Revised documentation for pintod.

     [BUG FIXES]

     - Now requires verison 0.018 of Test::LWP::UserAgent or newer
      which resolves some test failures in Pinto seen by CPAN Testers
      using older versions of T::LWP::UA.

0.083     2013-05-13 14:36:21 America/Los_Angeles


     - Improved password prompting, so it still works when STDIN
      and/or STDOUT are not connected to a terninal anymore.

     - Revised and corrected errors in documentation.

     - The etc/ directory has a sample init.d script (thanks @hesco).

0.082     2013-04-29 09:42:43 America/Los_Angeles

     - Just minor changes so Pinto will run on perl 5.8.9

0.081     2013-04-26 13:51:32 America/Los_Angeles

     - Just a minor change in test code to prevent failure occasionaly
       seen on Unix boxen.

0.080     2013-04-26 10:41:19 America/Los_Angeles


     - Pinto::Server and Pinto::Remote have been merged into this
      distribution, so everything ships together.  It also means both
      Pinto::Server and Pinto::Remote are now working again.  Woot!!

      There is one caveat: when using a remote repository, pinto will
      not display the diff and prompt you to edit the commit message.
      Instead, it will automatically use the default generated message
      or the message you specified at the command line.  I hope to fix
      this soon.

     [BUG FIXES]

     - pinto(1) and pintod(1) will now be installed with a fixed
      shebang, so that they will always run with the same version of
      perl, even if you use perlbrew to switch to a differnt perl
      (thanks @punter)

     - pinto(1) will now show the progress meter when reading input
      from a file.  The progress meter will be hidden whenever STDERR
      is not connected to a tty.  Use the --verbose or --quiet option
      to forcibly hide the progress meter.

     - Pinto now indexes "inner packages" so distributions like
      mod_perl will be indexed (more) correctly.  I had misunderstood
      how PAUSE worked.  Thanks @miyagawa.

0.068     2013-04-04 22:41:55 America/Los_Angeles

     - Now using Module::Build::CleanInstall, which removes files from
      the last installation before installing.  This should help
      prevent build failures for those coming from versions prior to
      0.066.  Thanks to Joel Berger for creating the wonderful

     - Worked around bizzare bug that caused DateTime::TimZone to blow
      up with a "locate object method" exception on perl 5.14.  Root
      cause has not been determined.

0.067     2013-03-30 00:23:36 America/Los_Angeles

     - Only minor refactoring.  No functional or interface changes.

     - Explicitly requires Term::ANSIColor 2.02 or later.  Thanks CPAN Testers!

     - Requires Pinto::Common 0.068, so you'll have better documentation.

0.066     2013-03-26 16:18:06 America/Los_Angeles


     - Your MUST uninstall both Pinto and App::Pinto before installing this.

     - For local repositories, you'll need to have App::Pinto 0.066 or later.

     - This release is not (yet) compatible with any Pinto::Server.


     - Bad news: This version of Pinto is not compatible with
     *existing* repositories.  To migrate, you'll need to create a new
     repository (using this version of Pinto) and then "pull" all the
     distributons from your old repository into the new one.  Repeat
     this process for each stack.  Unfortunatley, you will loose your
     revision history.  If you bug me about it, I'll write a script to
     automate this for you.  I am thaljef@cpan.org.

     - Good news: This version of Pinto has hooks to do future
     migrations automatically.  So any repository you create with
     *this version* of Pinto can be easily migrated to any future
     versions. I'm also pretty confident that the schema is now
     stable, so a migration will not be required for a while.


     - Switched from using Archive::Tar to Archive::Extract.  The
     latter will attempt to use tar(1) to unpack the archive, which
     works much better with older archives.  This is a bit slower
     however.  If you don't have tar(1), it falls back to using
     Archive::Tar internally.

     - Switched from using HTTP::UserAgent to HTTP::Tiny.  This cuts
     out one non-core dependency.  But some of Pinto's upstream
     dependencies probably still use HTTP::UserAgent, so the net
     effect is moot.

     - The version control subsystem has been completely redesigned.
     Pinto now stores full snaphots of the stack at each revision and
     organizes them in a directed graph, much like Git does.  Each
     revision is now identified by a unique non-sequential identifier.

     - The interface with the terminal has been completely redesigned.
     You'll see fewer (but hopefully better) diagnostic messages when
     running in verbose mode.  And if not verbose, then you'll see a
     progress meter.  If you still want to see all the gory details,
     then set the PINTO_DEBUG environment variable.

     - The logger has been completely removed, so Pinto no longer
     records diagnostic messages.  Recording them never proved to be
     useful anyway.  All the important changes to the stacks are still
     recorded in the revision log though.

     - Several Action classes have been added, removed, renamed, or
     repurposed.  The specifics are not described here because the
     Pinto API is still private.  See the change log for App::Pinto
     for a description of all the public interface changes.

0.065_06  2013-03-23 00:22:57 America/Los_Angeles
0.065_05  2013-03-20 16:21:57 America/Los_Angeles
0.065_04  2013-03-20 16:06:15 America/Los_Angeles
0.065_03  2013-03-19 15:52:24 America/Los_Angeles
0.065_02  2013-03-15 23:39:27 America/Los_Angeles
0.065_01  2013-03-15 16:19:38 America/Los_Angeles


     - Changes consolidated above under version 0.066.

0.065     2012-11-14 09:55:54 America/Los_Angeles

     [Interface Changes]

     - In commit messages, all lines starting with '#' are discarded.
       Previously, we figured out the start and end of the message
       based on other landmarks, but that isn't very reliable.

     - Commit timestamps are now reported in the format that is right
       for your locale.  However, they are reported in UTC, not the
       local timezone.  I will fix this in the next release.

      [New Features]

     - Commit messages are now parsed into separate title and body
       sections.  The message prompt will advise you to put the title
       on the first line, followed by one blank line, followed by the
       body (just like with Git).  We make some attempt to be lenient
       with the parsing, in case you don't follow the suggetion.

0.064     2012-11-12 13:29:50 America/Los_Angeles

      [New Features]

     - If running in an interactive environment and the PINTO_PAGER or
       PAGER environment variable is set, then Action output will be
       sent to it.  Log messages still go to STDERR and will not be
       sent to the pager.

0.063     2012-11-12 11:58:29 America/Los_Angeles


     - This version of Pinto is not compatible with repositories that were created
     with prior versions.  Please contact thaljef@cpan.org if you need to migrate an
     old repository.

      [New Features]

     - Now has a Rename action, to change the name of an existing
       stack.  You'll need a newer App::Pinto to utilize this action

      [Bug Fixes]

     - The Delete action actually works now (Schwern, Holybit).

0.062     2012-11-08 10:52:02 America/Los_Angeles

      [Interface Changes]

     - If the commit message for a Committable action is empty (but
       defined) then we automatically fall back to using the default

      [Interal API Changes]

     - Actions that take a stack name argument can now accept a stack
       object as well.

     - Pinto::Util has been moved from this distribution to Pinto-Common.

0.061     2012-10-30 17:19:10 America/Los_Angeles

      [Interal Changes]

     - Some query optimizations, to benefit alpha.stratopan.com

     - Stack and Revision objects are now sortable.  In string
       context, Stacks sort by name.  In numeric context, they sort by
       Revision.  Revisions sort chronologically.

0.060     2012-10-23 10:57:41 America/Los_Angeles

      [New Features]

     - You can now set the default stack at the same time that you
       create or copy a stack.

      [Other Changes]

     - The output of the Blame action now has the familiar format of
       the List action, and records are sorted by package name.

0.059     2012-10-20 00:52:34 America/Los_Angeles


     This version of Pinto is not compatible with repositories that
     were created with prior versions.  Please contact thaljef@cpan.org
     if you need to migrate an old repository.

      [Interface Changes]

     - Stack names and property names are no longer forced to
       lowercase.  Instead, we preserve the original case when they
       are created.  But subsequent comparisons or lookups are done
       irrespective of case.

     - Author IDs are no longer forced to uppercase.  However, the
       author ID in the canonical path for any distribution that you
       add will always be uppercase, which is consistent with PAUSE.
       When listing distributions/packages for a certain author, the
       comparison is done irrespective of case.

      [Other Changes]

     - Made several schema optimizations to help support Stratopan,
       the upcoming cloud-based service built on Pinto.  For a
       preview, check out http://alpha.stratopan.com

0.058     2012-10-11 22:47:23 America/Los_Angeles

      [New Features]

     - Added the Blame action, which reports who last modified each
       package in the stack.  You'll need App::Pinto-0.052 to utilize
       this action.

      [Bug Fixes]

     - When pulling prereqs, Pinto would pull the latest version of
       the package across the entire repository, rather than taking
       the version that is already on the stack. If the package that
       is on the stack does not exist or is too old, *then* you get
       the latest version in the repository.  And if that does not
       exist or is too old, *then* we get the latest version from an
       upstream repository.

0.057     2012-10-07 12:28:37 America/Los_Angeles

     - The Pull action will ignore requests for packages that are in
       the Perl core, unless you explicitly request a version of the
       package that is newer than the core.

     - Removed stray dependency on Pinto::Store::File.  That module
       has been deprecated and no longer ships with Pinto (holybit).

0.056     2012-09-27 13:40:56 America/Los_Angeles


     This version of Pinto is not compatible with repositories that
     were created with prior versions.  Please contact thaljef@cpan.org
     if you need to migrate an old repository.

      [New Features]

     - Added the Replace action, which substitues one dist for another
       on all stacks.  You'll need to upgrade App::Pinto to get the
       corresponding 'replace' command.

      [Other Changes]

     - Significantly improved performance, especially for large
       repositories.  Pinto can now hold the *entire* CPAN (not just
       the tip) and still perform reasonably well.

     - Changed the way prereqs are discovered.  We now trust the
       dist's own META to tell us the prereqs, rather than configuring
       the dist directly.  This is much faster and usually just as
       accurate.  The only casualties are old dists that don't have a
       META file, or ones that compute prereqs dynamically during
       configuration.  So it ain't perfect, but it is probably good

      [Bug Fixes]

     - Pinto can now cope with distributions that contain no packages.
       These are relatively rare but they do exist on CPAN, usualy in
       the form of distributions that contain only scripts.

0.055     2012-09-20 13:33:57 America/Los_Angeles

      [Interface Changes]

     - For the List action, the magic stack name is now '%' instead of
       '@'.  This was changed to distinguish it from revision strings
       that look like stack@1234.

     - The username attribute is now attached to the Config, not the
       Action.  This makes it available to any object that needs it
       (particularly when creating a Revision).

0.054     2012-09-19 22:02:57 America/Los_Angeles

     - Added a workaround so Pinto can cope with the nonsensical
       common::sense module.

0.053     2012-09-19 20:58:46 America/Los_Angeles

      [Bug Fixes]

     - For all committable actions, a commit message is required only
       if the action actually changed the state of the repository. A
       commit message is never required for a dryrun action.

      [Other Changes]

     - Requires DBIx::Class-0.08200 or newer.  In certain earlier
       versions, prefetching was broken.

     * The Install action is now committable, but it only matters
       when it is also pulling packages.

0.052     2012-09-18 16:15:38 America/Los_Angeles


     This version of Pinto is not compatible with repositories that
     were created with prior versions.  The way that archives and
     indexes are stored on the filesystem has been made simpler
     and faster.  If using Pinto::Server, you'll need to upgrade
     that too.  Contact thaljef@cpan.org if you need a migration
     path for an existing repository.

      [New Features]

     - Now supports a Revert action, which restores the stack to a
       prior revision.  This is light-weight form of version control.

     - Now supports a Log action, which displays the history of
       changes to a stack.

     - Each action that changes the state of the repository now
       requires a commit message.  You can pass this into the API, or
       it will prompt for one via your editor.

      [Other Changes]

     - The Index action is no longer supported.  Now that each stack
       has its own index file, I see no need to have this Action.

     - Orphaned archives are now automatically cleaned whenever you do
       an Add or Pull action with dryrun enabled.

     - Now requires Dist-Requires-0.008, which fixes some test
       failures on some platforms.

0.051     2012-08-15 18:27:34 America/Los_Angeles

     - More hacking to workaround the broken prefetch feature in
       DBIx::Class.  May result is slightly slower performance now
       that we have to make more trips to the database.

     - Added the Clean action to remove orphaned archives from the
       filesystem.  The Pull and Add actions now automatically clean
       up if doing a dryrun.

0.050     2012-08-15 14:26:13 America/Los_Angeles

     - I've worked around the bug that required you to use a
       development version of DBIx::Class (see previous release notes
       below).  So now you don't have to manually install anything.

0.048     2012-08-15 09:05:19 America/Los_Angeles

     - Prefetch is broken in DBIx::Class-0.08198 (see RT #78456) so
     Pinto now requires DBIx::Class-0.08198_01 or later.  At the
     moment, this is only available as a dev release, so you may have
     to install it manually before building Pinto.  For example:

     $ cpan JROBINSON/DBIx-Class-0.08198_01.tar.gz

0.047     2012-08-13 17:21:03 America/Los_Angeles

     - Added a hook for controling the lockfile timeout via an
     environment variable.  This makes testing for Pinto::Server and
     Pinto::Remote faster.

0.046     2012-08-13 15:17:18 America/Los_Angeles


     - Removed workaround for bug that appeared in DBIx::Class-0.08198.
     We now require DBIx-Class-0.08198_01, which is only a developer
     release at the moment.  So you may have to fetch that dependency

      [Bug Fixes]

     - Partially resolved #14, where Pinto would blow up if you
     asked it to pull a core-only package.  In this case, it
     really should give you a warning.  But for now, it just
     silently skips it.

      [Other Changes]

     - Pinto::Tester now constructs the repository on disk
     immediately upon constructing the object.  Before, you
     had to access the pinto attribute to trigger it to
     write anything to disk.

0.045     2012-07-23 23:14:42 America/Los_Angeles

      [Bug Fixes]

     - Tests were failing with the latest version of DBIx::Class.
     I think the root cause is in DBIx::Class itself (see RT #78456)
     but until that is resolved, I've done a workaround.

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


     - 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

     - 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

     - 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,

     - 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

     - 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

     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

     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

     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

     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".

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 command.  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

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

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

    * 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

    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

    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

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

    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

    * 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.