App-Sqitch

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

     - Removed `no Moo::sification`, to allow modules to be used by Moose
       applications. Replaced with tests to make sure Sqitch itself never uses
       Moose. Thanks to @perigrin for the PR (#332).
     - Specifying a change before a target name on the command-line no longer
       ignores the target (#281).
     - The `--db-*` options are now more consistently applied to a target,
       including when the target is specified as a URI (#293).
     - `HEAD` and `ROOT` are now properly recognized as aliases for `@HEAD`
       and `@ROOT`, when querying the database. This was supposedly done in
       v0.991, but due to a bug, it wasn't really. Sorry about that.
     - The `revert` and `verify` commands will now fail if a change is
       specified and matches multiple changes. This happens when referencing a
       reworked change only by its name. In this case, Sqitch will emit an
       error listing properly tag-qualified changes to use. Suggested by Jay
       Hannah (#312).
     - Sqitch no longer returns an error when a target name is passed to a
       command and the default target's plan file does not exist (#324).
     - Added missing options to the `rework` usage statement. Thanks to Jay
       Hannah for the PR (#342).
     - Passing an engine name or plan file as the `<database>` parameter to
       the `log`, `status`, and `upgrade` commands now works correctly,
       matching what the documentation has said for some time (#324).
     - Added the `--target` option to the `plan` and `show` commands.
     - Added the `<database>` parameter to the `plan` command.
     - Sqitch now loads targets from all config files, not just the local
       file, when trying to determine if a `<database>` parameter is a plan
       file name.
     - Improved the error message when a change is found more than once in a
       plan, typically a reworked changed referenced only by name. The error
       will no longer be "Key at multiple indexes", but "Change is ambiguous.
       Please specify a tag-qualified change:", followed by a list of
       tag-qualified variants of the change.
     - Fixed a bug where the verify command would return a database error when
       it finds no registry. Now it reports that the registry wasn't found in
       the database.

0.9995 2016-07-27T09:23:55Z
     - Taught the `add` command not to ignore the `--change` option.
     - The `add` command now emits a usage statement when no change name is
       passed to it.
     - The `add` command now helpfully suggests using the --change option when
       attempting to add a change with the same name as a target. Thanks to
       Ivan Nunes for the report!
     - The `tag` command now helpfully suggests using the --tag option when
       attempting to add a tag with the same name as a target.
     - Added `--global` as an alias for `--user` to the `config` command. This
       alias benefits the muscle memory of Git users.
     - Added a note for Git users to the `sqitch-revert` documentation, to
       head off potential confusion with `git revert`. Thanks to Eric
       Bréchemier for the "time travel" analogy and wording.
     - Fixed an "uninitialized value" error when creating a registry database
       on Windows. Thanks to Steven C. Buttgereit for the report (Issue #289).
     - Fixed editor selection to prioritize the `core.editor` configuration
       variable over the `$EDITOR` environment variable. The `$SQITCH_EDITOR`
       environment variable still trumps all. Thanks to Jim Nasby for the pull
       request (#296).
     - Added detection of the `$VISUAL` environment variable to Editor
       selection, prioritized after the `core.editor` configuration variable
       and before the `$EDITOR` environment variable. Thanks to Jim Nasby for
       the pull request (#296).
     - Updated the DateTime code to set the locale via `set_locale()` instead
       of `set()`, as the latter may actually change the local time
       unintentionally, and has been deprecated since DateTime v1.04. Thanks
       to Dave Rolsky for the pull request (#304).

0.9994 2016-01-08T19:46:43Z
     - Reduced minimum required MySQL engine from 5.1.0 to 5.0.0. Thanks to
       @dgc-wh for testing it (Issue #251).
     - Fixed floating-point rounding issue with SQLite registry versions on
       Perls with 16-byte doubles. Thanks to H. Merijn Brand for the report
       and testing.
     - Fixed an error when adding an engine with the `engine` command. Thanks
       to Victor Mours for the report and fix!
     - Updated the Oracle engine to support Oracle Wallet connection strings,
       where no username or host is in the connection URI. Thanks to Timothy
       Procter for the patch!
     - Improved the installer's selection of the prefix in which to install
       `etc` files to better match the `--installdirs` option, which defaults
       to the "site" directories. Thanks to @carragom for the pull request
       (#265).
     - Added missing dash to `-engine` in sample calls to `sqitch init` in the
       tutorials. Thanks to Andrew Dunstan for the spot (Issue #268).
     - Fixed broken Vertica documentation links.
     - Attempting to revert a database with no associated registry no longer
       reports the registry as version 0, but correctly reports that no
       registry can be found. Thanks to Arnaldo Piccinelli for the spot (Issue
       #271).
     - Fixed the search for change IDs in engines to match the search for
       changes. Specifically, change ID search now properly handles the
       offset characters `~` and `^`. This bug mainly affected the `verify`
       command, but it's good to address the inconsistency, done mainly by
       adding the `find_change_id` and `change_id_offset_from_id` methods to
       complement the `find_change` and `change_offset_from_id` methods.
       Thanks to Andrew Dunstan for the spot (Issue #272).
     - Fixed the `flips` table example in the MySQL tutorial. It was
       inappropriately copied from the PostgreSQL tutorial at some point.
       Thanks to Jeff Carpenter for the spot (Issue #254)!

0.9993  2015-08-17T17:55:26Z
     [Bug Fixes]
     - Eliminated test failures due to warnings from DateTime::Locale when
       `LC_TIME` is set to C.UTF-8. Thanks to Shantanu Bhadoria for the report
       and Dave Rolsky for the workaround.
     - Fixed an error checking the registry version when the local uses a
       comma for decimal values. Thanks to Steffen Müller for the report
       (Issue #234).
     - Worked around an error setting the MySQL storage engine using versions
       of DBI prior to 1.631. Thanks to melon-babak for the report!
     - Fixed an error from the Oracle engine when deploying more than 1000
       changes. Thanks to Timothy Procter and Minh Hoang for the report and
       testing the fix.
     - Fixed a bunch of typos in error messages, comments, and documentation.
       Thanks to Dmitriy for the pull request!
     - Fixed test failures due to new warnings from File::Path on Perl
       5.23.1.
     - On Firebird, Looking up a change and tag in the database (via the
       `--onto` option to `rebase` or the `--to` option to `revert`, among
       others) would sometimes return the incorrect change if the change has
       been reworked two or more times. Was fixed for the other engines in
       v0.9991.
     - Fixed the `--all` option used to apply a command to all known targets
       so that it loads only targets specified by the local configuration.
       Otherwise, user and system configuration can get in the way when they
       specify engines and targets not used by the current project.
     [Improvements]
     - Added support for the `--set` option when deploying to MySQL. Thanks to
       Chris Bandy for figuring out how to do it!
     - Added support for a "reworked directory". By default, reworked change
       scripts live in the deploy, revert, and verify directories along with
       all the other change scripts. But if that starts to get too messy, or
       you simply don't want to see them, add a `reworked_dir` setting to the
       core, engine, or target config and reworked scripts will be stored
       there, instead. Also supported are `reworked_deploy_dir`,
       `reworked_revert_dir`, and `reworked_verify_dir`.
     - Added the `--dir` option to the `init`, `engine`, and `target`
       commands.
     - Copied the core configuration options (`--engine`, `--target`,
       `--plan-file`, `--registry`, etc.) to the `init`, `engine`, and
       `target` commands. This means that they can be specified after the
       command, which is a bit more natural. It also means that the
       `--registry` and `--client` options of the `target` are no longer
       deprecated.
     - The `init` command no longer writes out commented values for the
       `deploy_dir`, `revert_dir`, or `verify_dir` settings. I think these
       settings are not commonly used, and it would start to get crowded if we
       also added their "reworked" variants, which will be used still less.
     - Added the `alter` action to the `engine` and `target` commands to set
       engine and target properties.
     - Added support for setting reworked directories to the `engine` and
       `target` commands.
     - Reformatted the output of the `engine` and `target` command `show`
       actions to include reworked directories, and to bit a bit less flat.
     - Attempting to add or alter an engine with a target URI that connects to
       a different engine now triggers an error. For example, you can't set
       the target for engine `pg` to `db:sqlite:`.
     - The `add` and `alter` actions of the `engine` and `target` commands
       now create script directories if they don't already exist.
     - The `add` action of the `engine` and `target` commands now creates a
       plan file if one does not exist in the specified location for the
       engine or target.
     - Added the `deploy_dir`, `revert_dir`, and `verify_dir` methods to
       App::Sqitch::Plan::Change. Each points to the proper directory for the
       target depending on whether or not the change has been reworked.
     - In the MySQL engine, the following URI query params will be converted
       to options passed to the command-line client, if they're present:
       * mysql_compression=1   => --compress
       * mysql_ssl=1           => --ssl
       * mysql_connect_timeout => --connect_timeout
       * mysql_init_command    => --init-command
       * mysql_socket          => --socket
       * mysql_ssl_client_key  => --ssl-key
       * mysql_ssl_client_cert => --ssl-cert
       * mysql_ssl_ca_file     => --ssl-ca
       * mysql_ssl_ca_path     => --ssl-capath
       * mysql_ssl_cipher      => --ssl-cipher
     [Documentation]
     - Added the "Overworked" section to sqitch-configuration guide with an
       example of how to move reworked change scripts into a `reworked_dir`.
     [Deprecations]
     - Deprecated the `set-*` actions in the `engine` and `target` commands in
       favor of the new `alter` action.
     - The core `--deployed-dir`, `--revert-dir`, and `--verify-dir` options
       are deprecated in favor of the `--dir` option on the `init`, `engine`,
       and `target` command.

0.9992 2015-05-20T23:51:41Z
     - On PostgreSQL, Sqitch now sets the `client_encoding` parameter to
       `UTF8` for its own connection to the database. This ensures that data
       sent to and from the database should always be properly encoded and
       decoded. Users should still set the proper encodings for change scripts
       as appropriate.
     - Fixed test failures due to path differences on Windows.
     - DateTime::TimeZone is now explicitly required in an attempt to head off
       "Cannot determine local time zone" errors.
     - Corrected some typos and thinkos in `sqitchtutorial-oracle`, thanks to
       George Hartzell.
     - Improved the script to upgrade an Oracle registry to v1.0 to support
       versions prior to Oracle 12, thanks to Timothy Procter.
     - Added missing closing parenthesis to the "Nothing to deploy" message.
       Thanks to George Hartzell for the pull request (Issue #226).
     - Replaced the unique constraint on the `script_hash` column in the
       `changes` registry table with a unique constraint on `project` and
       `script_hash`. This is to allow a deploy script to be used in more than
       one project in a single database. This change increments the registry
       version to v1.1. Thanks to Timothy Procter for the report.
     - Updated the registry check constraints to have consistent names on the
       engines that support them. This will make it easier to modify the
       constraints in the future.
     - Fixed precision issues with the registry version on MySQL and Firebird.
     - Added comment to sqitch-passwords guide that MySQL::Config is required
       to read passwords from the MySQL configuration files. Thanks to
       Sterling Hanenkamp for the patch!

0.9991 2015-04-03T23:14:39Z
     [Improvements]
     - Reduced minimum required MySQL engine from 5.6.4 to 5.1.0. Versions
       prior to 5.6.4 lose the following features:
       * Versions earlier than 5.6.4 is fractional second precision on
         registry `DATETIME` columns. Since the ordering of those timestamps
         is so important to the functioning of Sqitch, it will sleep in 100 ms
         increments between logging changes to the registry until the time has
         ticked over to the next second. Naturally, reverts and deploys will
         be a little slower on versions of MySQL before 5.6.4, but accurate.
       * Versions earlier than 5.5.0 lose the `checkit()` functions, which
         would otherwise be used to emulate CHECK constraints in the registry,
         as well as in user-created verify scripts, as recommended in the
         MySQL tutorial, `sqitchtutorial-mysql`.
     - Added a script to update the `DATETIME` columns in a MySQL Sqitch
       registry that was upgraded to MySQL 5.6.4 or higher. It will be
       installed as `tools/upgrade-registry-to-mysql-5.6.4.sql` in the
       directory returned by `sqitch --etc`.
     - Added a script to add the `checkit()` function and registry triggers to
       emulate CHECK constraints to a MySQL Sqitch registry that was upgraded
       to MySQL 5.5.0 or higher. It will be installed as
       `tools/upgrade-registry-to-mysql-5.5.0.sql` in the directory returned
       by `sqitch --etc`.
     - The `init` command now throws an error when the plan file already
       exists and is invalid or defined for a different project. Thanks to
       Gabriel Potkány for the suggestion (Issue #214).
     - All commands that take target arguments can now specify them as engine
       names or plan file paths as well as target names and URIs.
     - Added the `--all` option and the `$command.all` configuration variable
       to the `add`, `rework`, `tag`, and `bundle` commands. This option tells
       the commands to do their thing for all plans known from the
       configuration, not just the default plan.
     - Pass engine, target, or plan file names to the `add`, `rework`, `tag`,
       and `bundle` commands` commands to specify specify one or more targets,
       engines, and plans to act on.
     - Added the `--change` option to the `add`, `rework`, and `tag` commands
       to distinguish the change to be added, reworked, or tagged from
       plan-specifying arguments, if necessary.
     - Added the `--tag` option to the `tag` command to distinguish the tag to
       be added from plan-specifying arguments, if necessary.
     - Changed the short variant of the `--conflicts` option to the `add` and
       `rework` commands from `-c` to `-x`. The `-c` option is now used as the
       short variant for `--change` (and `--conflicts` has almost certainly
       never been used, anyway).
     - Added the `engine` and `project` variables to the execution of script
       templates by the `add` command. The default templates now use it to
       make their first lines one of:
       * -- Deploy [% project %]:[% change %] to [% engine]
       * -- Revert [% project %]:[% change %] from [% engine]
       * -- Verify [% project %]:[% change %] on [% engine]
     [Bug Fixes]
     - DateTime::TimeZone::Local::Win32 is now required on Windows.
     - The MySQL engine no longer passes `--skip-pager` on Windows, since
       it is not supported there. Thanks to Gabriel Potkány for the report
       (Issue #213).
     - Fixed "no such table: changes" error when upgrading the SQLite
       registry.
     - Fixed upgrade failure on PostgreSQL 8.4. Thanks to Phillip Smith for
       the report!
     - Fixed an error when the `status` command `show_changes` and `show_tags`
       configuration variables were set. Thanks to Adrian Klaver for the
       report (Issue #219).
     - Fixed `log` and `plan` usage statements to properly spell `--abbrev`.
       Thanks to Adrian Klaver for the report (Issue #220).
     - Fixed the formatting of change notes so that a space precedes the `#`
       character whether the note was added by the `--note` option or via an
       editor.
     - Fixed a bug when parsing plan files with DOS/Windows line endings.
       Thanks to Timothy Procter for the report (Issue #212).
     - Looking up a change and tag in the database (via the `--onto` option to
       `rebase` or the `--to` option to `revert`, among others) would
       sometimes return the incorrect change if the change has been reworked
       two or more times. Thanks to BryLo for the report!
     [Documentation]
     - Updated docs to be consistent in referring to the location of the system
       configuration and template location as `$(prefix)/etc/sqitch`. Also
       added notes pointing to the `--etc-dir` to find out exactly what that
       resolves to. Suggested by Joseph Anthony Pasquale Holsten (Issue #167).
     [Deprecations]
     - Reverted deprecation of the database connection options. Target URIs
       are still generally preferred, but sometimes you want to use a target
       but just change the user name or database name. Retaining the options
       is the easiest way to do this. Plus, a fair number of people have
       scripts that use these options, and it seems petty to break them. Sorry
       for the double-take here! The list of un-deprecated options is:
       * `--db-client`
       * `--db-host`
       * `--db-port`
       * `--db-username`
       * `--db-password`
       * `--db-name`

0.999  2015-02-12T19:43:45Z
     - Improved MySQL missing table error detection by relying on error codes
       instead of matching a (possibly localized) error string.
     - Made the registry upgrade more transparent when deploying. Sqitch is
       now is a little more vigilant in checking for things being out-of-date
       and updating them.
     - Fixed an issue where the `status` command would return an error when
       run against a an older version of the registry.
     - Fixed a Postgres test failure when DBD::Pg is installed but psql is not
       in the path.
     - Now require Config::GitLike 1.15 to build on Windows in order to avoid
       test failures when Cwd::abs_path dies on non-existent paths.
     - Clarified the behavior of each `deploy` reversion mode with regard to
       deploy script vs. verify script failures, and with the expectation that
       deploy scripts are atomic.
     - Target passwords can now be set via a single environment variable,
       `$SQITCH_PASSWORD`. Its value will override URI-specified password.
     - Added the sqitch-passwords and sqitch-environment guides.

0.998  2015-01-15T22:17:44Z

Changes  view on Meta::CPAN

       will cease to support them in v1.0:
       * `core.$engine.host`
       * `core.$engine.port`
       * `core.$engine.username`
       * `core.$engine.password`
       * `core.$engine.db_name`
     - Deprecated the `--registry` and `--client` options of the `target`
       command. All target properties should now be set via the new `--set`
       option, such as `--set registry=reg`.
     - Formally deprecated the following options of the `add` command. They
       have been replaced with the `--with`, `--without`, and `--use` options
       since v0.991. Their use will emit a warning, and they will be removed
       in v1.0:
       * `--deploy-template`
       * `--revert-template`
       * `--verify-template`
       * `--deploy`
       * `--no-deploy`
       * `--revert`
       * `--no-revert`
       * `--verify`
       * `--no-verify`
     - Dropped support for the long-deprecated (and likely never used outside
       ancient tests long deleted) engine configuration variables
       `core.sqlite.sqitch_db` and `core.pg.sqitch_schema`. Both have been
       replaced with `engine.$engine.registry`, which applies to all engines.
     - Formally deprecated the `@FIRST` and `@LAST` symbolic tags. Their use
       will trigger a warning to use `@ROOT` and `@HEAD`, instead. They will
       be removed in v1.0.
     [Internals]
     - Moved target and engine configuration from App::Sqitch and
       App::Sqitch::Engine to a new class, App::Sqitch::Target. This class is
       solely responsible for finding the appropriate values for attributes on
       every run. The target knows what plan and engine to use, based on those
       properties. App::Sqitch is now responsible solely for encapsulating
       command-line options, configuration, and utilities. Classes are now
       responsible for instantiating both an App::Sqitch and
       App::Sqitch::Target options as appropriate.
     - Updated all classes to create both Sqitch and Target objects as
       appropriate. This change touched almost every class.
     - Replaced attributes in App::Sqitch that were previously set from
       command-line options or configuration with a single attribute,
       `options`, which is a hash only of the command-line options. Classes
       are now responsible for finding the proper values in config or options.
       Mostly this requirement is encapsulated by the new App::Sqitch::Target
       class.
     - Updated the command classes to use either a "default target" derived
       from command-line options, engine configuration, and core
       configuration, or a target looked up by name in the configuration
       maintained by the `target` command.

0.996  2014-09-05T21:11:00Z
     - Fixed one more test failure due to the introduction of "Negative repeat
       count does nothing" warning in Perl 5.21.1.
     - Fixed "Redundant argument in printf" warning on Perl 5.21.2.
     - Switched from Digest::SHA1, which is deprecated, to Digest::SHA for
       generating SHA-1 IDs.
     - Switched from Mouse and Moose to Moo. Sqitch no longer depends on any
       modules that use Moose, either. This results in an approximately 40%
       startup time speedup.
     - Loading of App::Sqitch::DateTime is now deferred until it's needed.
       This is because DateTime is rather expensive to load. Since a number of
       commands don't need it, it seems silly to load it in those cases.
     - Now recommend Type::Tiny::XS and Class::XSAccessor for improved
       performance.
     - The `check` command now properly fails on a plan parse error, instead
       of blindly continuing on.
     - Fixed a failing test on PostgreSQL due to localization issues. Thanks
       to Sven Schoberf for the report (Issue #171).
     - Added the `revert.prompt_accept`, `rebase.prompt_accept`, and
       `checkout.prompt_accept` boolean configuration variables. Set these
       variables to false to change the default answer to the revert prompt to
       "No". When rebasing or checking out, if the variables specific to those
       commands are not set, Sqitch will fall back on the value of
       `revert.prompt_accept`. Suggested by Graeme Lawton (Issue #164).
     - The MySQL engine now sets the `$MYSQL_PWD` environment variable if a
       password is provided in a target. This should simplify authentication
       when running MySQL change scripts through the `mysql` client client
       (Issue #150).
     - The MySQL engine now reads `client` and `mysql` groups in the MySQL
       configuration files for a password when connecting to the registry
       database, and when the target URI includes no password. The MySQL
       client already read those files, of course, but now the internal
       database connection does as well (Issue #150).
     - The Firebird engine now sets the `$ISC_PASSWORD` environment variable
       if a password is provided in a target. This should simplify
       authentication when running Firebird change scripts through the `isql`
       client client. Patch from Ștefan Suciu.
     - No longer passing URI query params as DBI params, because they are
       already included in the DSN provided by URI::db.
     - Added the Vertica engine.

0.995  2014-07-13T22:24:53Z
     - Fixed test failures due to the introduction of "Negative repeat count
       does nothing" warning in Perl 5.21.1.
     - Fixed more test failures when DBD::Firebird is installed but Firebird
       isql cannot be found.
     - Fixed registry file naming issues on Win32 for the SQLite engine, and
       as well as the tests that failed because of it.
     - Worked around Config::GitLike bug on Windows in the target test.
     - Changed the exit value for an attempt to deploy to an up-to-date
       database from 1 to 0. In other words, it no longer looks like an error
       (Issue #147).

0.994  2014-06-20T02:58:10Z
     - Fixed installation failure due to missing IO::File module on Windows.
     - Fixed file test failure for the Oracle engine on Windows.
     - Fixed bug where namespace-autoclean: 0.16 caused errors such as
       "Invalid object instance: 'yellow'".
     - Fixed Oracle SQL*Plus capture test failure on Windows.

0.993  2014-06-04T20:14:34Z
     - Fixed engine loading to prefer the engine implied by the target URI
       over the `core.engine` configuration variable. This means that you no
       longer have to pass `--engine` when using commands that accept a target
       option or argument, such as `deploy`.
     - Fixed test failure when DBD::Firebird is installed but Firebird isql
       cannot be found.
     - Fixed issue where the revert command fails to execute the proper revert
       script. This can occur when a change has been reworked in the plan, but
       the reworked version of the change has not been deployed to the
       database. Thanks to Timothy Procter for the report (Issue #166).

Changes  view on Meta::CPAN

       the plan, it gets a new ID ID. The upshot is that things *must* be in
       order for a deploy to succeed. Existing deployments will automatically
       have their IDs updated by the `deploy` command.
     - Changed the `revert` command so that it *only* fetches information about
       changes to be reverted from the database, rather than the plan.
     - Deprecated the `@LAST` and `@FIRST` symbolic tags. With `revert` now
       fetching change information from the database, there is no longer a
       need to specify that changes be found in the database. It's possible
       some other way to search database changes will be added in the future,
       but if so, it will be less limiting than `@LAST` and `@FIRST`, because
       it will likely allow searches by literal tags.
     - Added the `rebase` command. This command combines a `revert` and a
       `deploy` into a single command, which should allow for more natural
       deployment testing during development. `sqitch rebase @HEAD^` should
       become a common command for database developers.
     - Duplicate values passed via `--requires` and `--conflicts` in the `add`
       and `rework` actions are now ignored.
     - The `add` command now throws an exception if `--template-directory` is
       passed or specified in the configuration file, and the specified
       directory does not exist or is not a directory. Thanks to Ronan Dunklau
       for the report! (Issue #52).
     - The `revert` command now prompts for confirmation before reverting
       anything. The prompt can be skipped via the `-y` option or setting the
       `revert.no_prompt` configuration variable. Works for rebase, too, which
       reads `rebase.no_prompt` before `revert.no_prompt`.' (Issue #49.)
     - Added the `show` command, which show information about changes or tags,
       or the contents of change script files. (Issue #57.)
     - Renamed the `test` scripts and planned command to `verify`.

0.938 2012-10-12T19:16:57Z
     - Added a primary key to the PostgreSQL `events` table, which should make
       it easier to support replication.

0.937 2012-10-09T21:54:36Z
     - Fixed the `--to` option to `deploy` and `revert`, which was ignored
       starting in v0.936.

0.936 2012-10-09T19:11:5Z2
     - Added `--set` option to the `deploy` and `revert` commands. Useful for
       setting database client variables for use in scripts. Used by the
       PostgreSQL engine.
     - Merged the contents of `dist/sqitch-pg.spec` into a subpackage in
       `sqitch.spec`. This allows both RPMs are created from a single build
       process. Simplifies things quite a bit and improves the flexibility for
       adding other engines in the future.
     - Reduced required Perl version from 5.10.1 to 5.10.0.
     - Fixed inconsistent handling of command options with dashes where some
       were ignored.
     - The bundle command now properly copies scripts for changes with slashes
       in their names -- that is, where the scripts are in subdirectories.

0.935 2012-10-02T19:21:05Z
     - Updated `dist/sqitch-pg.spec` to require `postgresql` rather than
       "postgresql91". The version doesn't matter so much.
     - All known Windows issues and failures fixed, with many thanks to Randy
       Stauner for repeatedly running tests and supplying patches:
       - Fixed "'2' is not recognized as an internal or external command,
         operable program or batch file" error on Windows.
       - Fixed multiple errors detecting Windows. The OS name is "MSWin32",
         not "Win32". The test failure thus addressed was the setting of the
         DateTime locale.
       - Fixed failing tests that were incorrectly comparing subprocess errors
         messages on Windows
       - Fixed bug in `bundle` where a file would be re-copied even if the
         source and destination had the same timestamps, as they seem to do
         during tests on Windows. Patch from Randy Stauner.
       - Fixed failing test that failed to include `.exe` in a file name on
         Windows. Patch from Randy Stauner.
     - Added French translation, with thanks to Arnaud (Arhuman) ASSAD!

0.934 2012-09-28T16:43:43Z
     - Fixed typo in error handling that prevented an I/O error message from
       being properly emitted.

0.933 2012-09-27T18:04:53Z
     - The `init` command no longer fails if `--top-dir` does not exist. It
       creates it.
     - Yet another attempt to fix "List form of pipe open not implemented" bug
       on Windows.

0.932 2012-09-26T21:32:48Z
     - One more attempt to fix "List form of pipe open not implemented" bug on
       Windows.

0.931 2012-09-25T19:09:14Z
     - Now properly require Text::LocaleDomain 1.20.
     - Stubbed out French and German localization files. Translators wanted!
     - Added LocaleTextDomain dzil support (no impact on distribution).
     - Fix "List form of pipe open not implemented" bug on Windows by using
       Win32::ShellQuote to quote commands.

0.93  2012-08-31T22:29:41Z
     - Added forward and reverse change references. Append ^ to a change
       reference to mean the change before, or ~ to mean the change following.
       Use ~~ and ^^ to select two changes forward and back, and ~n and ^n,
       where n is an integer, to select that number of changes forward or
       back. Idea stolen from Git, though the meanings of the characters are
       different.
     - Added the @FIRST and @LAST symbolic references to refer to the first
       and last changes deployed to the database, respectively. These vary
       from the existing @ROOT and @HEAD symbolic references, which refer to
       the first and last changes listed in the plan.
     - Updated the tutorial to use the new symbolic references and ^ and ~
       qualifiers where appropriate.
     - The messages output by the `deploy` and `revert` commands now show the
       resolved name of the `--to` target, rather than the value passed to
       `--to`. This is most useful when using a symbolic reference, so you
       can see what you're actually deploying or reverting to.

0.922 2012-08-30T17:41:59Z
     - Loosened constraint to disallow only `/[~^/=%]/` before digits at the
       end of name. This allows, for example, a tag to be named "v1.2-1".
     - Added the `bundle` command to the documentation displayed by `sqitch
       help`.
     - Updated the mention of the `bundle` command in the main `sqitch`
       documentation.

0.921 2012-08-30T00:09:56Z
     - Made Win32::Locale required only on Windows.
     - Fixed some module minimum version requirements so that dependencies
       will be properly listed in `Build.PL`.

0.92  2012-08-28T23:14:37Z
     - Added the `bundle` command.
     - Attempts to deploy a project with a different name or URI than
       previously registered now throws an exception.
     - Added UNIQUE constraint to `projects.uri` in the PostgreSQL Sqitch
       schema.
     - Added ON UPDATE actions to foreign key constraints in the PostgreSQL
       Sqitch schema.

0.913  2012-08-28T17:31:29Z
     - Fixed oversight in test that still relied on `$ENV{USER}` instead of
       `Sqitch->sysuser`,

0.912 2012-08-27T21:23:19Z
     - Fall back on `Sqitch->sysuser` when looking for the PostgreSQL user,
       rather than just `$ENV{USER}`. The method does a lot more work to find
       the system user name. This will hopefully also fix test failures on
       systems where `$ENV{USER}` is not set.
     - Use Win32::Locale to set the locale on DateTime objects on Windows.

0.911 2012-08-23T19:19:17Z
     - Fixed more platform-specific test failures in `t/base.t`.
     - Increased liklihood of finding a user's full name on Windows. Thanks to
       H. Merijn Brand for testing.

0.91  2012-08-23T00:37:36Z
     - Moved `requires` and `conflicts` array columns from the `changes` table
       to an new table, `dependencies`, where there is just one per row.
     - Requirements are now checked before reverting a change. If the change
       is depended on by other changes, it will not be reverted (Issue #36).
     - Fixed bug where the `status` command would show changes and/or tags
       from other projects when `--show-tags` or `--show-changes` were used.
     - Fixed test failures on Windows.
     - Added more ways to look up the current username to minimize the chances
       that none is found.
     - Added Windows-specific way of finding the current user's full name,
       since the existing approach died on Windows.
     - Windows-specific modules are no longer required, but are recommended on
       Windows. They will be listed by `./Build` and added to the "recommends"
       section of the the generated `MYMETA.*` files on Windows.
     - Fixed a bug where dependencies on other projects would be rejected
       in calls to `add` and `rework`.

0.902 2012-08-20T21:14:08Z
     - Fixed another occasional test failure due to a clock tick in `t/pg.t.`
     - Fixed test failures in `t/status.t` on systems without DBD::Pg.

0.901 2012-08-20T19:31:03Z
     - Fix test failure in `t/status.t` caused by failing to ignore a
       pre-existing `~/.sqitch/sqitch.conf` configuration file.
     - Eliminated "Use of uninitialized value in length" warnings.

0.90  2012-08-18T00:05:41Z
     - Added `dist/sqitch.spec`. This file was created to generate an RPM for
       CentOS 6.1.
     - Added `dist/sqitch-pg.spec` to use for creating RPMs for Sqitch with
       PostgreSQL support.
     - Fixed an occasional test failure due to a clock tick in `t/pg.t.`
     - Switched to Dist::Zilla for creating the distribution. For end-users,
       this just means that `Build.PL` is now a generated file.
     - Required module versions are now declared in code. This is so that they
       are enforced at runtime, and also so that they will be picked up by
       Dist::Zilla for inclusion in the generated `Build.PL` and `META` files.x
     - Added support for declaring dependencies (required and conflicting
       changes) from other Sqitch projects. This allows one project to depend
       on changes from another. The syntax is `--requires $projname:$change`.
       This use of the colon required a few changes to the Plan syntax:
       + Pragmas may now appear only in the first "header" section of the
         plan, separated from the changes in the "body" of the plan by a blank
         line.
       + Required dependencies no longer begin with ":". Conflicts still must
         begin with "!".
       + Object names may no longer contain ":", as it is used for project
         specification.
       + Project-qualified dependencies are supported by the project name
         appearing before the change name, separated by a colon.
     - Added App::Sqitch::Plan::Depend, an object to parse, represent, and
       serialize dependencies.
     - The plan parser does not validate changes required from other projects,
       as it has no access to the plans from those projects.
     - The engine interface validates cross-project dependencies before
       deploying changes.
     - Project data is not included in the Sqitch metadata tables in the
       database. There is a table for all known projects, as well as foreign
       key references in the `changes`, `tags`, and `events` tables.
     - Project information is now displayed in the output of `sqitch status`
       and `sqitch log` (in some formats).
     - Added `--project` option to `sqitch status` to identify the project for
       which to display the status. Defaults to the current project, if there
       is one, or to the project in the database, if there is only one
       registered project.
     - Added `--project` option to `sqitch log` to allow searching for events
       from projects matching a regular expression.
     - Now require Config::GitLike 1.09 for its improved character encoding
       support.
     - Dependencies can now be declared as SHA1 hash IDs, including for IDs
       from other projects.
     - Fixed change and tag name validation to count "_" as a non-punctuation
       character, and therefore able to be used at the beginning or end of
       names.
     - Replaced the `appuser` change in `sqitchtutorial` with `appschema`.
       This simplifies things, since users are global objects in PostgreSQL,
       while schemas are not. As a result, a bunch of irrelevant code was
       removed from the tutorial.

0.82  2012-08-03T21:25:27Z
     - Now require Moose 2.0300, since MooseX::Role::Parameterized, which
       requires Role::HasMessage, requires it, anyway,
     - Fixed test failure in `t/pg.t` when running on Test::More 0.94.
     - Require POSIX in `t/datetime.t` to fix test failure with CentOS 6
       Perl. Not sure why it did not fail anywhere else, but it's harmless
       enough to make sure it's loaded early.

0.81  2012-08-03T11:34:46Z
     - Removed wayward `/l` from a regular expression, which breaks Perls
       earlier than 5.14, and is not needed anyway.
     - Fixed error in `log` that caused invalid output on Perls earlier than
       5.14. Seems that `return` is required for `when` statements meant to
       return a value, and postfix `when` is not supported in Perl 5.10.

0.80  2012-08-01T21:54:00Z
     - Added the `log` command to `sqitchcommands.pod`, which is shown as the
       output of `sqitch help`.
     - Added  `user.name` and `user.email` configuration variables.
     - Now using `user.name` and `user.email`, rather than the system or
       database user name, to log the user committing changes to a database.
     - Database-specific options are now prefixed with `--db-`.
     - Added "raw" format to App::Sqitch::DateTime. It is ISO-8601 format in
       UTC.
     - Modified the "raw" log format to use the raw DateTime format.
     - Added timestamp and planner info to the plan. This is additional
       metadata included in every change and tag: The planner's name and email
       address and the current timestamp. This makes it easier to audit who
       added changes to a plan and when.
     - Added the `--note` option to the `add`, `rework`, and `tag` commands.
     - For consistency throughout, renamed all attributes and options from
       "message" and "comment" to "note", which is shorter and better reflects
       their purpose.
     - The planner's name and email address, as well as the plan time and
       note, are now stored in the database whenever changes or tags are
       committed and logged.
     - Renamed various database columns to be more consistent, with the terms
       "commit", "plan", and "note".
     - Added `requires` and `conflicts` columns to the events table, so that
       they can become available to the `log` command.
     - Various `log` format changes:
       * Renamed %n (newline) to %v (vertical space)
       * Renamed %c to %n (change name)
       * Replaced %a (committer name) with %c (committer info). It takes an
         optional argument:
         + "name" or "n" for committer name
         + "email" or "e" for committer email
         + "d" or "date" for commit date
         + "d:$format" or "date:$format" for formatted commit date
       * Added %p (planner info). It takes an optional argument just like
         "%c" does:
         + "name" or "n" for planner name
         + "email" or "e" for planner email
         + "d" or "date" for plan date
         + "d:$format" or "date:$format" for formatted plan date
       * Added special argument to "%C", `:event", which returns a color based
         on the value of the event type:
         + Green for "deploy"
         + Blue for "revert"
         + Red for "fail"
       * Added "%r" and "%R" for lists of required changes.
       * Added "%x" and "%X" for lists of conflicting changes.
       * Added "%a" to display an unlocalized attribute name and value.
       * Added "planner", "committer", "planned", and "email" arguments to %_.
       * Documented that the dates can take CLDR or strftime formats, too.
       * Added the %s, %b, and %B format for "subject", "body", and raw body
         akin to Git. The values are taken from the note value, if available.
       * Added committer email addresses to default formats.
       * Added plan data to default formats.
       * Added note data to default formats.
       * Added lists of required and conflicting changes to the "raw" and
         "full" formats.
       * Switched to event-driven colors for event types and change IDs in
         default formats.
       * Added color to the event type and change ID output in the "raw"
         format.
    - Added detailed descriptions of the default formats to `sqitch-log.pod`.
    - Updated the Change object to encode and decode vertical whitespace in a
      note, so that all data remains on a single line for each object in the
      plan file.
    - Now require a note when adding, reworking, or tagging a change. If
      `--note` is not specified, an editor will be launched and the user
      prompted to write a note. This is similar to how `git commit` behaves,
      and encourages documentation of changes.
    - Added required "project" and optional "uri" pragmas to the plan.
    - Added `--project` and `--uri` attributes to the `init` command.
    - Removed the `core.uri` configuration variable and corresponding core
      `--uri` option (since it has been replaced with the `init` command's
      `--uri` option.
    - Command-line arguments are now all assumed to be UTF-8, and are parsed
      as such.
    - Added workaround to force the configuration file to be written and read
      as UTF-8. Requires an unreleased version of Config::GitLike to actually
      work properly.
    - Text passed to a pager (as when running `sqitch log`) is now encoded in
      UTF-8.
    - Fixed `--quiet` option so that it properly trumps `--verbose`.

0.71  2012-07-12T15:30:27Z
     - Updated the example `sqitch log` output in `sqitchtutorial`.
     - Changed the terms "actor", "agent" to "committer" throughout the API
       and output.
     - Renamed the `events` table columns from `logged_at` and `logged_by` to
       `committed_at` and `committed_by`.

0.70  2012-07-12T13:24:13Z
     - Changed the `current_changes()` and `current_tags()` Engine methods so
       that they return iterator code references instead of lists.
     - Added the `search_events()` Engine method, to search the event log.
     - Added the `pager` attribute and `page()` methods to App::Sqitch.
     - Added support for `strftime:` and `cldr:` options to the `status`
       command's `--date-format` option.
     - Added the `log` command.
     - Added the `strftime:$string` and `cldr:$string` options to
       `--date-format` in the `status` and `log` commands.

0.60  2012-07-07T11:12:26Z
     - Removed some discussion of VCS integration, since it is not yet
       implemented, and it may be a while before it is.
     - Added `sqitchcommands`, documentation of the most common Sqitch
       commands, and fixed `--help` to show it.
     - Fixed `--man` to show the sqitch command documentation.
     - Fixed error handling for unknown commands, so that it displays a
       message saying the command is unknown, rather than a stack trace.
     - Adding a change after a tag now also inserts a blank line into the plan
       between the tag and the new change, for nicer plan file formatting.
     - Added the `status` command.
     - Added App::Sqitch::DateTime, a DateTime subclass with named formats.

0.51  2012-07-04T18:34:07Z
     - Added Role::HasMessage to the list or requirements in `Build.PL`. Was
       an oversight that it was omitted in v0.50.
     - Removed the `--dry-run` option. It was completely ignored. Maybe it
       will return someday.
     - Removed `fail()`, `bail()`, `unfound()`, and `help()`. It's better for
       commands not to exit, so have them throw exceptions in the appropriate
       places, instead.
     - Replaced all uses of Carp and non-exception handling uses of `die` with
       our own localized exceptions.
     - Localized all output and exception messages.

0.50  2012-07-03T19:55:20Z
     - Require a plan file.
     - Renamed "steps" to "changes".
     - New plan file spec.
       + Tags are just labels on a particular change, no longer a list of
         changes.
       + Dependencies now specified in the plan file, not in the deploy
         script.
       + Changes can be specified as deploys or reverts, though reverts
         are not currently supported.
       + Changes can be specified with an optional leading `+` for deploy or
         `-` for revert, which will eventually be important for conflict
         management.
       + Dependencies can be specified as other change names, tags, or a
         change as of a tag (e.g., `foo@beta`).
       + Pragmas can be specified with a leading `%`. Only `%syntax-version`
         is currently recognized; all others are ignored.
     - Renamed the `add-step` command to just `add`.
     - Added the `tag` command.
     - Added the `revert` command.
     - Added the `rework` command.
     - Added exception objects and started using them.
     - Added localization support and started using it.
     - Added IDs to changes and tags. These are SHA1s generated from the return
       value of the new `info` method, which describes the change or tag.
     - Updated the PostgreSQL engine to comply with the new Engine API.
     - Updated the PostgreSQL engine to use IDs for tracking changes and tags.
     - Eliminated the term "node" from the plan implementation and docs.
     - Updated the engine base class for the new plan API, and to just deploy
       changes one-at-a-time.
     - Added many new ways to look for changes in the plan, including:
       + `change_name`
       + `@tag_name`
       + `change_name@tag_name`
       + `change_id`
       + `tag_id`
     - The plan file can now be written out with nearly all white space and
       comments preserved.
     - Changed the `add` command to write out the plan file after a new change
       is added.
     - Change names can now be duplicated, as long as a tag name appears
       between them.
     - Renamed `target` to destination in Engine.
     - Started referring to the change to deploy or revert to in docs as the
       "target".
     - PostgreSQL errors will now be thrown as Sqitch exceptions, for proper
       handling during command execution.



( run in 0.841 second using v1.01-cache-2.11-cpan-99c4e6809bf )