App-Sqitch

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

       determined. Thanks to Slaven Rezić for the test reports, and to
       Dave Rolsky for the solution (#672).
     - Updated the MySQL deploy/revert lock to be specific to the target
       database. This allows multiple instances of Sqitch to run at the
       same time on the same server as long as they're connecting to different
       databases. Thanks to Dmytro Kh for the report and discussion of the
       options (#670).
     - Fixed test failures where DBD::Mem was not installed. Likely only
       occurred on some CPAN Testers nodes. Thanks to Slaven Rezić for those
       (#673).
     - Banned the backslash character (`\`) in change and tag names. It would
       be ignored on Unix-style systems, but create unexpected subdirectories
       on Windows systems.
     - Banned the slash character (`/`) in tag names. They're still allowed
       in change names to enable script organization, but can wreak havoc
       when used in tag names. Thanks to @ewie for the report (#680)!

1.3.0  2022-08-12T22:09:13Z
     - Fixed an issue when testing Firebird on a host with Firebird installed
       but no `isql`, and when using a local Firebird (e.g., the Engine12
       provider), which allows only one connection at a time. Thanks to Slaven
       Rezić for the the reproducible configuration (#597).
     - Tweaked the Postgres engine to support Yugabyte. The only unsupported
       features are explicit locks, so users need to manually ensure that only
       one instance of Sqitch is updating the cluster at a time.
     - Added support for CockroachDB. Almost exactly the same as for Postgres,
       so the new App::Sqitch::Engine::cockroach class extends
       App::Sqitch::Engine::pg to make a few changes. The SQL files with
       the registry DDL varies in a few ways, so they're separate.
     - Now require URI::db v0.20 for Cockroach and Yugabyte URI support.
     - Dropped support for MySQL 5.0.
     - Added explicit sorting for aggregated lists (such as the tags associated
       with a commit) to the MySQL, Exasol, Snowflake, and Postgres (9.0 and
       higher) engines.
     - Fixed slow deploys on MariaDB thanks to fractional timestamp support
       added in 5.03.05. Thanks to @rbrigot for the PR (#658)!
     - Fixed a bug where destination locking failed on the first deploy to
       MySQL. Bug introduced along with destination locking in v1.2.0.
       Thanks Tom Bloor the report and to Alberto Simões for the help
       replicating the issue (#601).
     - Removed the `sqitch engine update-config` action, originally added for
       compatibility reasons in 2014, and the prompt to use it was removed as
       of 0.9999 in 2019.
     - Fixed a warning when searching for the Firebird client on Windows.

1.2.1  2021-12-05T19:59:45Z
     - Updated all the live engine tests, aside from Oracle, to test with
       unique registry names, so as to avoid conflicts when multiple
       instances are being tested at once. Thanks to Slaven Rezić for the
       report (#597).
     - Removed `local` directory from the distribution, accidentally included
       in v1.2.0. Thanks to gregor herrmann for the report (#600).

1.2.0  2021-11-20T22:45:00Z
     - Fixed partitioned search for deployed changes on Oracle and Exasol to
       correctly support plans with more than 250 changes. Thanks to @Nicqu
       for the report (#521).
     - DBI connections to the registry will now be set to trace level one
       when a verbosity level of three or higher is passed to Sqitch
       (i.e., `sqitch -vvv`). Thanks to @wkoszek for the suggestion (#155).
     - Renamed the "master" branch to "main" and updated all relevant
       references.
     - Fixed the parsing of the Snowflake account name from the target URL
       to that it no longer strips out the region and cloud platform parts.
       Also deprecated the use of the region, host, and port config and
       environment variables. This is to comply with the new account name
       format. Thanks to @ldsingh00 for the report (#544).
     - The checkout command will now show a usage statement when no branch
       name is passed to it, rather than a series of warnings and a Git error.
       Thanks to François Beausoleil for the report (#561).
     - The checkout command now works when operating on a Sqitch project in
       a subdirectory of a Git project. Thanks to François Beausoleil for the
       report and suggested fix (#560).
     - Fixed a failing bundle test when a top directory was configured in the
       user or system configuration. Thanks to @CodingMinds for the spot
       (#587).
     - Added support to the Exasol engine for the `AUTHMETHOD` query parameter
       (to allow Open ID authentication) and the `SSLCERTIFICATE=SSL_VERIFY_NONE`
       query parameter to disable SSL verification. Thanks to Torsten Glunde
       for the report (#588).
     - Fixed "Use of uninitialized value $engine in concatenation" error when
       Sqitch is unable to determine the engine when writing a plan file. Only
       happens in the rare case that the core.engine value is not set.
     - Improved the error message when attempting to update a plan file and no
       project pragma is present. Thanks to Laurentiu Diaconu for the report
       (#577).
     - Fixed the error message when attempting to deploy a change that has
       already been deployed to display the name of the change, rather than a
       memory address. Thanks to Neil Mayhew for the report (#579).
     - Added destination locking, currently implemented for PostgresQL and
       MySQL. On starting a deploy or revert, Sqitch attempts to "lock the
       destination" using advisory locks, to ensure that only one instance of
       Sqitch makes changes to the database at any one time. This complements
       the existing locking, which applies as each change is deployed or
       reverted, as that pattern led to failures when multiple instances of
       Sqitch were working at once. Thanks to Neil Mayhew for the report
       (#579).
     - Added the --lock-timeout option to the deploy, revert, rebase, and
       checkout commands, to allow for shorter or longer times to wait for an
       exclusive target database advisory lock for engines that support it.
       Defaults to 60 seconds.
     - Fixed the behavior of the plan command's `--max-count` option when used
       with `--reverse` to show the proper items. Thanks to Adrian Klaver for
       the report (#517).
     - Fixed an issue that could cause bugs with the `check` command on
       Firebird, Exasol, Oracle, and Vertica. Broken since the `check` command
       was added in v1.1.0.

1.1.0  2020-05-17T16:20:07Z
     - Fixed Perl Pod errors, thanks to a pull request from Mohammad S Anwar
       (#470).
     - Fixed test failures when running with the localization set to German
       or Italian. Thanks to Slaven Rezić for the report (#472).
     - Fixed an issue when the full name of the current user is not set, so
       that it properly falls back on the username. Thanks to Slaven Rezić and
       Matthieu Foucault for the report and testing various fixes (#473).
     - Eliminated an error when using the `-t` option to specify a target, due
       to a missing dependency declaration in the Target class. Thanks to
       Clinton Adams for the fix (#509)!
     - Updated the IPC::System::Simple Win32 workaround added in 0.9999 to
       properly support released versions of IPC::System::Simple. This fixes

Changes  view on Meta::CPAN

       space or other character requiring URI escaping. Thanks to Ralph
       Andrade for the report (#463).
     - Fixed an issue where a wayward newline in some versions of SQLite
       prevented Sqitch from parsing the version. Thanks to Kivanc Yazan
       for the report (#465) and the fix (#465)!
     - Fixed an error when Sqitch was run on a system without a valid
       username, such as some Docker environments. Thanks to Ferdinand Salis
       for the report (#459)!
     - When Sqitch finds the registry does not exist on PostgreSQL, it now
       sends a warning to the PostgreSQL log reporting that it will initialize
       the database. This is to reduce confusion for folks watching the
       PostgreSQL error log while Sqitch runs (#314).

0.9999 2019-02-01T15:29:40Z
     [Bug Fixes]
     - Fixed a test failure with the MySQL max limit value, mostly exhibited
       on BSD platforms.
     - Removed fallback in the PostgreSQL engine on the `$PGUSER` and
       `$PGPASSWORD` environnement variables, as well as the system username,
       since libpq does all that automatically, and collects data from other
       sources that we did not (e.g., the password and connection service
       files). Thanks to Tom Bloor for the report (issue #410).
     - Changed dependency validation to prevent an error when a change required
       from a different project has been reworked. Previously, when requiring a
       change such as `foo:greeble`, Sqitch would raise an error if
       `foo:greeble` was reworked, suggesting that the dependency be
       tag-qualified to eliminate ambiguity. Now reworked dependencies may be
       required without tag-qualification, though tag-qualification should still
       be specified if functionality as of a particular tag is required.
     - Added a workaround for the shell quoting issue on Windows. Applies to
       IPC::System::Simple 1.29 and lower. See
       [pjf/ipc-system-simple#29](https://github.com/pjf/ipc-system-simple/pull/29)
       for details (#413).
     - Fixed an issue with the MariaDB client where a deploy, revert, or
       verify failure was not properly propagated to Sqitch. Sqitch now passes
       `--abort-source-on-error` to the Maria `mysql` client to ensure that
       SQL errors cause the client to abort with an error so that Sqitch can
       properly handle it. Thanks to @mvgrimes for the original report and,
       years later, the fix (#209).
     - Fixed an issue with command argument parsing so that it truly never
       returns a target without an engine specified, as documented.
     - Removed documentation for methods that don't exist.
     - Fixed test failures due to a change in Encode v2.99 that's stricter
       about `undef` arguments that should be defined.

     [Improvements]
     - The Snowflake engine now consults the `connections.warehousename`,
       `connections.dbname`, and `connections.rolename` variables in the
       SnowSQL configuration file (`~/.snowsql/config`) before falling back on
       the hard-coded warehouse name "sqitch" and using the system username as
       the database name and no default for the role.
     - Switched to using a constant internally to optimize windows-specific
       code paths at compile time.
     - When `deploy` detects undeployed dependencies, it now eliminates
       duplicates before listing them in the error message.
     - Now requiring IO::Pager v0.34 or later for its more consistent
       interface.
     - Added notes about creating databases to the tutorials. Thanks to Dave
       Rolsky for the prompt (#315).
     - Added a status message to tell the user when the registry is being
       updated, rather than just show each individual update. Thanks to Ben
       Hutton for the suggestion (#276).
     - Added support for a `$SQITCH_TARGET` environment variable, which takes
       precedence over all other target specifications except for command-line
       options and arguments. Thanks to @mvgrimes for the suggestion (#203).
     - Fixed target/engine/change argument parsing so it won't automatically
       fail when `core.engine` isn't set unless no targets are found. This
       lets engines be determined strictly from command-line arguments --
       derived from targets, or just listed on their own -- whether or not
       `core.engine` is set. This change eliminates the need for the
       `no_default` parameter to the `parse_args()` method of App::Sqitch
       Command. It also greatly reduces the need for the core `--engine`
       option, which was previously required to work around this issue (see
       below for its removal).
     - Refactored config handling in tests to use a custom subclass of
       App::Sqitch::Config instead of various mocks, temporary files, and the
       like.
     - Added advice to use the PL/pgSQL `ASSERT()` function for verify scripts
       to the Postgres tutorial. Thanks to Sergii Tkachenko for the PR (#425).

     [Target Variables]
     - The `verify` command now reads `deploy.variables`, and individual
       `verify.variables override `deploy.variables`, on the assumption that
       the verify variables in general ought to be the same as the deploy
       variables. This makes `verify` variable configuration consistent with
       `revert` variable configuration.
     - Variables set via the `--set-deploy` option on the `rebase` and
       `checkout` commands no longer apply to both reverts and deploys, but
       only deploys. Use the `--set` option to apply a variable to both
       reverts and deploys.
     - Added support for core, engine, and target variable configuration. The
       simplest way to use them is via the `--set` option on the `init`,
       `engine`, and `target` commands. These commands allow the configuration
       of database client variables for specific engines and targets, as well
       as defaults that apply to all change execution commands (`deploy`,
       `revert`, `verify`, `rebase`, and `checkout`). The commands merge the
       variables from each level in this priority order:
       * `--set-deploy` and `--set-revert` options on `rebase` and `checkout`
       * `--set` option
       * `target.$target.variables`
       * `engine.$engine.variables`
       * `deploy.variables`, `revert.variables`, and `verify.variables`
       * `core.variables`
       See `sqitch-configuration` for general documentation of of the
       hierarchy for merging variables and the documentation for each command
       for specifics.

     [Options Unification]
     - Added the `--chdir`/`--cd`/`-C` option to specify a directory to change
       to before executing any Sqitch commands. Thanks to Thomas Sibley for
       the suggestion (#411).
     - Added the `--no-pager` option to disable the pager (#414).
     - Changed command-line parsing to allow core and command options to
       appear anywhere on the line. Previously, core options had to come
       before the command name, and command options after. No more. The caveat
       is that command options that take arguments should either appear after
       the command or use the `--opt=val` syntax instead of `--opt val`, so
       that Sqitch doesn't think `val` is the command. Even in that case, it
       will search the rest of the arguments to find a valid command.
       However, to minimize this challenge, the documentation now suggests
       and demonstrates putting all options after the command, like so:

Changes  view on Meta::CPAN

       * The `--verbose` option on the `--engine` and `--target` commands has
         been removed, but no visible change should be apparent, since those
         commands now read the core `--verbose` option.
       * The undocumented `--dir` alias for `--top-dir` has been removed, as
         it conflicted with the option of the same name but different meaning
         in the `init`, `engine`, and `target` commands.
       * The `-d` alias for `--set-deploy` in the `rebase` and `checkout`
         commands has been changed to `-e` so as not to conflict with the `-d`
         alias for `--db-name`.
       * Added tests for all commands to ensure none of their options conflict
         with core options. Will help prevent conflicts in the future.

     [Deprecations & Removals]
     - Deprecated the `--top-dir` option in favor of `--chdir` with a warning
       except when used for configuration in the `init`, `engine`, and
       `target` commands.
     - Removed the core `--deploy-dir`, `--revert-dir`, and `--verify-dir`
       options, which have been deprecated and triggering warnings since
       v0.9993 (August 2015). The `--dir` option to the `init`, `engine`, and
       `target` commands remains the favored interface for specifying script
       directories.
     - Removed the deprecated core `--engine` option. The `init` command still
       supports it, while other commands are able to parse the engine name as
       an argument --- e.g., `sqitch deploy mysql` --- or implicitly as part
       of a target, as in `sqitch revert db:pg:tryme`. When Sqitch is unable
       to determine the engine for a command, the error message no longer
       mentions `--engine` and instead suggests specifying the engine via the
       target. This option never triggered an error, but demonstration of its
       use has been limited to `init` examples.
     - Removed support for reading the `core.$engine` configuration, which has
       been deprecated with warnings in favor of `engine.$engine` since 0.997
       (November 2014). The `sqitch engine update-config` action remains
       available to update old configurations, but may be removed in the
       future.
     - Removed the `--deploy`, `--revert`, and `--verify` options on the `add`
       command, as well as their `--no-*` variants. They have been deprecated
       with warnings in favor of the `--with` and `--without` options since
       v0.990 (January 2014).
     - Removed the `--deploy-template`, `--revert-template`, and
       `--verify-template` options to the `add` command. They have been
       deprecated with warnings in favor of the `--use` option since v0.990
       (January 2014).
     - Removed the `add.deploy_template`, `add.revert_template`, and
	   `add.verify_template` configuration settings. They have been deprecated
	   with warnings in favor of the `add.templates` configuration section
       since v0.990 (January 2014).
     - Removed the `@FIRST` and `@LAST` symbolic tags, which have been
       deprecated with warnings in favor of `@ROOT` and `@HEAD`, respectively,
       since 0.997 (November 2014).
     - Removed the command-specific options with the string "target" in them,
       such as `--to-target`, `--upto-target`, which have been deprecated with
       warnings in in favor of options containing the string "change", such as
       `--to-change` and `--upto-change`, since v0.997 (November 2014).
     - Remove the `engine` and `target` command `set-*` actions and their
       corresponding methods, which have been deprecated in favor of the
       `alter` action since v0.9993 (August 2015).
     - Removed the automatic updating of change and tag IDs in the Postgres
       engine. This functionality was added in v0.940 (December 2012), when
       Postgres was the only engine, and the SHA-1 hash for change and tag IDs
       was changed. There were very few deployments at the time, and all
       should long since have been updated.

     [API Changes]
     - Added the URI-overriding parameters `user`, `host`, `port`, and
       `dbname` to App::Sqitch::Target so that command options can be used to
       easily set them.
     - Added support for passing attribute parameters to the `all_targets`
       group constructor on App::Sqitch::Target, so that command-line options
       can be used to assign attributes to all targets read from the
       configuration.
     - Aded the `target_params` method to App::Sqitch::Command and updated all
       commands to use it when constructing targets. This allows commands to
       define options for Target parameters, as required for moving options to
       commands as described above.
     - Added the `class_for` method to App::Sqitch::Command so that the new
       options parser described above can load a command class without
       instantiating an instance. Useful for searching command-line arguments
       for a command name.
     - Added the `create` constructor to App::Sqitch::Command to let Sqitch
       instantiate an instance of a command once it finds one via `class_for`.
       Previously, Sqitch used the `load` method, which handled the
       functionality of both `class_for` and `create`. That method still
       exists but is used only in tests.
     - Added the ConnectingCommand role to define database connection options
       for the commands that need them.
     - Added the ContextCommand role to define command options for the
       location of the plan file and top directory. This is also where use of
       the deprecated form of `--top-dir` triggers a warning.
     - Removed the `verbosity` attribute from App::Sqitch::Command::engine and
       App::Sqitch::Command::target, since the `--verbose` option is no longer
       needed. These commands now rely on the core `--verbose` option.
     - Removed the copying of core options from the target class and
       TargetConfigCommand role, since the attributes fetched from there are
       no longer core options, but provided as attribute parameters to the
       constructors by commands.
     - Removed documentation for the optional `config` parameter to the
       `all_targets` constructor of App::Sqitch::Target, since it was never
       used by Sqitch. It always fetched the config from the required `sqitch`
       parameter. Support for the `config` parameter has not been removed,
       since third-parties might use it.
     - Removed the `set_*` methods in the `engine` and `target` commands,
       which have been deprecated in favor of the new `alter` method since
       v0.9993 (August 2015).
     - Removed the `old_id` and `old_info` methods from Change and Tag, which
       date from v0.940 (December 2012), and were provided only to allow
       existing Postgres databases to be updated from the old to new ID
       format, now removed. There should be no other use case for these
       methods.

0.9998 2018-10-03T20:53:58Z
     - Fixed an issue where Sqitch would sometimes truncate the registry
       version number fetched from MySQL, most likely because the Perl runtime
       was using 32-bit integers. Fixed by casting the version to CHAR in the
       query, before Perl ever see it. Thanks to Allen Godfrey David for the
       report.
     - Added the Snowflake engine.
     - Now require URI::db v0.19 for Snowflake URI support.
     - The Vertica and Exasol engines now require DBD::ODBC 1.59, which fixes
       a Unicode issue. Thanks to Martin J. Evans for the quick fix
       (perl5-dbi/DBD-ODBC#8)!
     - Added the `bundle` command to `./Build`. This command installs only the
       runtime dependencies into the `--install_base` directory. This should
       simplify building distribution packages, binary installs, Docker images,
       and the like.
     - Added the `--with` option to `./Build`, to require that Sqitch be build
       with the specified engine. Pass once for each engine. See the README
       for the list of supported engines.
     - Added a check for Hash::Merge 0.298 during installation, since that
       release has a fatal bug that breaks Sqitch. If it's installed, the
       installer will issue a warning and added v0.299 to its list of
       dependencies. Thanks to Slaven Rezić for the suggestion (#377).
     - Fixed the PostgreSQL engine so it properly checks the `psql` client
       version to determine whether or not the `:registry` variable is
       supported. Previously it relied on the server version, which would fail
       if the server version was greater than 8.4 but the `psql` client was
       not. Thanks to multiple folks reporting issues with registry names and
       search paths (#314).
     - The plan parser will now complain if a change specifies a duplicate
       dependency. This should be less confusing than a database unique
       violation. Thanks to Eric Bréchemier for the suggestion (#344).
     - Moved the project to its own GitHub organization,
       [Sqitchers](https://github.com/sqitchers).
     - Fixed likely cause of Oracle buffer allocation bug when selecting
       timestamp strings. Thanks to @johannwilfling for the bug report and to
       @nmaqsudov for the analysis and solution (#316).
     - Changed the way the conninfo string is passed to `psql` to eliminate
       argument ordering problems on Windows. Thanks to @highlowhighlow for
       the report (#384).
     - Added `$SQITCH_USERNAME` environment variable to complement
       `$SQITCH_PASSWORD`. It can be used to override the username set in
       for a target.
     - Added the `$SQITCH_FULLNAME` and `$SQITCH_EMAIL` environment
       variables, which take precedence over the values of the `user.name` and
       `user.email` config variables.
     - Added the `$SQITCH_ORIG_SYSUSER`, `$SQITCH_ORIG_FULLNAME` and
       `$SQITCH_ORIG_EMAIL` environment variables. For those situations when
       Sqitch attempts to read OS data for user information, These new
       environment variables override these system-derived values. The
       intention is to allow an originating host to set these values on
       another host where Sqitch will actually execute.
     - Fixed an error triggered by whitespace trailing an engine name in the
       configuration. Thanks to Jeremy Simkins for the report (#400).
     - Refactored the engine-specific username and password attributes to
       support a consistent search for values. Sqitch searches first for one
       of its own environment variables (`$SQITCH_USERNAME` and
       `$SQITCH_PASSSWORD`), then the target URI, and finally any engine-

Changes  view on Meta::CPAN


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).
     - Fixed issue with aggregating text values with `COLLECT()` on Oracle.
       Thanks to Timothy Procter for the digging and invocation of an Oracle
       support request (Issue #91).
     - Fixed issue where SQL*Plus could not run rework scripts because of the
       `@` in the file name. It now uses a symlink (or copied file on Windows)
       to circumvent the problem. Thanks to Timothy Procter for the report
       (Issue #165).
     - Fix issue where, on first deploy, the MySQL engine would fail to notice
       that the server was not the right version of MySQL. Thanks to Luke
       Young for the report (Issue #158).
     - Made the `checkit()` MySQL function DETERMINISTIC, to improve
       compatibility with MariaDB. Thanks to Jesse Luehrs for the report
       (Issue #158).
     - Fixed deployment to PostgreSQL 8.4 so that it no longer chokes on the
       `:tableopts`. Thanks to Justin Hawkins for the report!

0.992  2014-03-05T00:34:49Z
     - Fixed target test failures on Windows.
     - Added support for Postgres-XC to the PostgreSQL engine. Sqitch registry
       tables are distributed by replication to all data nodes.
     - Added support to MariaDB 5.3 and higher to the MySQL engine, thanks to
       Ed Silva.

0.991  2014-01-16T23:24:33Z
     - Greatly simplified determining the Firebird ISQL client. It no longer
       tries so hard to find a full path, but does search through the path list
       for a likely candidate between fbsql, isql-fb, and isql (or equivalents
       ending in .exe on Windows).
     - Removed a bunch of inappropriately pasted stuff from the Firebird
       tutorial, and updated it a bit.
     - `HEAD` and `ROOT` are now recognized as aliases for `@HEAD` and
       `@ROOT`, when querying the database, too. That means that `revert --to
       HEAD` now works the same as `revert --to @HEAD`, as had been expected
       in v0.990.
     - Eliminated "use of uninitialized value" warnings when database
       connections fail.
     - Reduced the minimum required DBD::Firebird to v1.11.
     - Fixed the `--verbose` option to the `target` command.
     - Eliminated more user-configuration issues in tests, thanks to
       chromatic.
     - Fixed test failures when the `$PGPASSWORD` environment variable is set,
       thanks to Ioan Rogers's test smoker.

0.990  2014-01-04T01:14:24Z
     [New Features]
     - Added new command and feature: `target`. Use it to manage multiple
       database targets, each with an associated URI and, optionally, a
       registry name and command-line client. Inspired by Git remotes.
     - Added Firebird engine. Three cheers to Ștefan Suciu for this
       contribution!
     - Added support for the generation of arbitrary scripts from templates to
       the `add` command. Just add template files to subdirectories of the
       `templates` directory, and scripts will be created in a directory of
       the same name based on those templates.
     - Added `--open-editor` option (and aliases) to the `add` and `rework`
       commands. This option will open the newly-added change scripts in the
       preferred editor. Thanks to Thomas Sibley for the patch!

     [Improvements]
     - Improved database driver loading to ensure the proper version of the
       driver is required.
     - Non-fatal but possibly unexpected messages -- which correspond to exit
       value 1 -- now send their messages to STDOUT instead of STDERR, and
       respect the `--quiet` option. Thanks to @giorgio-v for the report!
     - Added or replaced the `--target` option to commands that connect to a
       database to specify the name of target managed by the new `target`
       command or a database URI.
     - `HEAD` and `ROOT` are now recognized as aliases for `@HEAD` and
       `@ROOT`, respectively, since they are disallowed as change names,
       anyway, and folks often use them out of habit from Git.

     [Internals]
     - Replaced the engine-specific connection attributes with three
       attributes use by every engine:
       * `target`: The name of a target managed by the new `target` command.
         Defaults to a value stored for the `core.$engine.target`
         configuration variable. If that variable does not exist, the target
         falls back on the stringification of `uri`.
       * `uri`: a database URI with the format `db:{engine}:{dbname}` or
         `db:{engine}://{user}:{password}@{host}:{port}/{dbname}`. If its
         value is not passed to the constructor, a `uri` value is looked up
         for the associated `target`. If `target` is not passed or configured,
         or if it has no URI associated with it, the `config.$engine.uri`
         configuration variable is used. If that value does not exist, the URI
         defaults to `db:$engine:`. In any of these cases, if any of the
         `--db-*` options are passed, they will be merged into the URI.
       * `registry`: the name to use for the Sqitch registry schema or
         database, where Sqitch's own data will be stored, as appropriate to
         each engine. If its value is not passed to the constructor, a
         `registry` value is looked up for the associated `target`. If

Changes  view on Meta::CPAN

     - Added the `--no-log` option to `deploy`, `revert`, and `rebase`. This
       causes the changes to be logged as deployed without actually running
       the deploy scripts. Useful for an existing database that is being
       converted to Sqitch, and you need to log changes as deployed because
       they have been deployed by other means in the past.
     - Now check that dependencies are required for all changes to be deployed
       or reverted before deploying or reverting anything, rather than
       checking dependencies for each change just before deploying or reverting
       it. This allows a or revert deploy to fail sooner, with no database
       changes, when dependencies are not met.
     - The `deploy` command now checks that no changes its about to deploy are
       already deployed.
     - Added `--mode` to the `rebase` command.
     - Added the `--verify` option to `deploy` and `rebase`. Specify this
       option to run the verify script, if it exists, for each change after it
       is deployed. If the verify script dies, the deploy will be considered a
       failure and the requisite reversion (as specified for `--mode`) will
       begin.
     - Added the `verify` command, which verifies that a database is valid
       relative to the plan and each deployed change's verification scripts.
     - Changed the format of the list of changes output by `deploy` and
       `revert` so that each now gets "ok" or "not ok" printed on success or
       failure.
     - Added short aliases for commonly-used core options:
       * -f for --plan-file
       * -v for --verbose
       * -h for --db-host
       * -p for --db-port

0.940  2012-12-04T05:49:45Z
     - Fixed tests that failed due to I18N issues, with thanks to Arnaud
       (Arhuman) ASSAD!
     - Localized messages are now properly encoded in UTF-8. Thanks to Ronan
       Dunklau for the report (issue #46) and to Guido Flohr for details on
       how to address the issue.
     - The variables defined for the `add`, `deploy`, and `revert` commands
       now have the case of there names preserved if Config::GitLike 1.10 or
       later is installed. Thanks to Ronan Dunklau for the report (issue #48)
       and to Alex Vandiver for the case-preserving update to Config::GitLike.
     - Attempting to run `sqitch` with no command now outputs the list of
       supported commands (`sqitchcommands`), rather than the list of core
       options. Thanks to BryLo for the suggestion.
     - Changed the plan parser so that it no longer changes the order of
       changes based on the dependency graph. Unfortunately, this meant that
       the order could change from one run to another, especially if new
       changes were added since the last deploy. The planner now throws an
       exception if the order in the plan is wrong, and suggests that the user
       move changes in the plan file to get it to work properly.
     - Fixed bug where the `core.plan_file` configuration variable was
       ignored.
     - Improved error handling when deploying and reverting a change. If the
       change successfully deployed but the logging of the deployment to the
       database failed, there was just a rollback message. Sqitch will now
       emit the underlying error *and* run the revert script for the
       just-deployed change.
     - Modified the text hashed for change and tag IDs. Both now include the
       note, if present, the ID of the preceding change, and the list of
       dependencies. The result is that, when a change is modified or moved in
       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



( run in 2.477 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )