App-Sqitch

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

       (#821).
     - Updated the MySQL engine to omit the `checkit()` function when using
       binary logging and Sqitch lacks super user permissions. Thanks to Scott
       Edwards for the report and to Janosch Peters for the solution (#824).
     - Taught the Snowflake engine to detect when the Sqitch user lacks
       permission to create a schema and to skip the creation of the registry
       schema. Useful for cases when the registry schema was created in
       advance. Thanks to Peter Wimsey for the suggestion (#826).
     - Switched the MySQL engine from DBD::mysql to DBD::MariaDB for better
       compatibility with older versions of the MySQL client library and for
       its Unicode improvements. Thanks to Mark Tyrrell for the report and
       @tiberiusferreira and Perl Monks `1nickt` and`InfiniteSilence` for the
       feedback (#825).

1.4.1  2024-02-04T16:35:32Z
     - Removed the quoting of the role and warehouse identifiers that was
       added to the Snowflake engine in v1.4.0. Turns out Snowflake allows a
       warehouse to be specified in a different database, in which case dots
       are valid in the name and should not be quoted! So users must properly
       quote when necessary, but added notes to `sqitchtutorial-snowflake.pod`
       on the need to use URI escapes for special characters. Thanks to
       Patrick Sabo for the find, and to @marc-marketparts for validating
       that URI encoding works.
     - Added notes on URL encoding database URLs to `sqitch-target.pod`, the
       main reference for database URLs in the Sqitch documentation.
     - Fixed the output of the list of changes to be deployed or reverted to
       actually require `--verbose` twice, as described in the v1.4.0 changes,
       and not just once. Thanks to Erik Wienhold for the PR (#785)!
     - Removed the duplicate change name from the output of the list of
       changes to be deployed or reverted with `-VV`. Thanks to Erik Wienhold
       for the PR (#787)!
     - Fixed invalid template resolution when adding a singe change to
       multiple engines at once. Thanks to Christian Riedel for the detailed
       bug report (#795)!
     - Fixed Oracle and Firebird test failures due to incorrect use of `chmod`.
       Thanks to Slaven Rezić for the report and the fix (#807)!
     - Tests now require Test::Warn 0.31 or later, as newline handling issues
       cause test failures in earlier versions. Thanks to Slaven Rezić for the
       test reports and for identifying the issue.
     - Updated the locale configuration to fix issues in more recent versions
       of Perl, and added tests to ensure that the sqitch CLI executes and
       properly emits localized messages (except on Windows, where the language
       codes are incompatible).
     - Fixed an issue where the MySQL engine failed to recognize the MariaDB
       `mysql` client installed by Homebrew on macOS. Thanks to Carlos Ramos
       for the bug report and PR (#791)!

1.4.0 2023-08-01T23:37:30Z
     - Fixed Snowflake warehouse and role setup to properly quote identifiers
       unless they're valid unquoted identifiers or already quoted. Thanks to
       @marc-marketparts for the report (#685).
     - Fixed a bug reworking a change when a rework directory is configured
       but not created. Thanks to @jfeaver for the report (#686).
     - Output the list of changes to be deployed or reverted when `--verbose`
       is specified at least twice. Thanks to @vectro for the PR (#702).
     - Fixed the formatting of the log and plan commands to allow empty or `0`
       separators in lists of things (such as `%{0}t` for a list of tags).
       Thanks to @web-vertalo for the pull request (#703).
     - Updated the MySQL Tutorial to use 5.7 features. Thanks to Vlad
       Safronov for the PR (#705).
     - Deprecated the `no_prompt` and `no_prompt` attributes of
       App::Sqitch::Engine in favor of passing booleans to the `revert` and
       `verify` methods. The attributes still exist for reverse compatibility,
       but now emit warnings and will be removed in the future. Thanks to
       Thanks to @vectro for the PR (#704).
     - Added a warning for a double extension on the file names created
       by the `add` command. Thanks to @blairjordan for the PR (#724)!
     - Added the `revert.strict` boolean configuration variable which, when
       set to true, requires the specification of a change to revert to. It
       also disables the `rebase` and `checkout` commands, though the
       `rebase.strict` and `checkout.strict` variables, respectively, may
       override it. Use `revert.strict` to prevent accidental reverts in
       sensitive environments. Thanks to @vectro for the PR (#719; revised in
       #735)!
     - Fixed test failures due to a bug fix in the Perl URI module
       (libwww-perl/URI#13). Thanks to @bobfang for the report (#744)!
     - Fixed test failures due to a change in the generation of DBI DSN by
       URI::Oracle introduced by libwww-perl/URI-db#23.
     - Added a format option `%F` to `sqitch plan` that prints the path for
       the deploy file for each migration in the plan.
     - Changed the default location for the Oracle `sqlplus` client when the
       `ORACLE_HOME` environment variable is set. It now returns either
       `$ORACLE_HOME/bin/sqlplus` or `$ORACLE_HOME/sqlplus` if it exists
       and is executable (and ends in `.exe` on Windows). Otherwise it simply
       returns `sqlplus` as before, assuming it will be found in the path.
       Thanks to @vectro for the suggestion (#747).
     - Increased the required version of DBI to 1.631 or higher and removed
       a MySQL engine workaround for older versions.
     - Added detection of a missing registry schema on connect and conditions
       to avoid querying it when it does not exist. Fixes an issue where
       Sqitch might find a project record in the current schema instead of the
       expected registry schema. Thanks to @vectro for the report and
       investigation (#668)!
     - Fixed Snowflake and MySQL to properly raise errors on session query
       failures immediately after connection.
     - Fixed the handling of unique violations for deploy script hash
       uniqueness so that it no longer returns a database error but properly
       reports the issue in a more human-friendly error message. Thanks to
       Stefan Badenhorst for the reminder (#630).
     - Updated the registry SQL scripts for Vertica to always enable primary
       key and unique constraints. Unique constraints are now enabled for
       all database engines except Exasol and Snowflake.
     - Dropped support for Vertica 7.1, as unique constraint enforcement was
       not added until Vertica 7.2.
     - Increased minimum SQLite versions to 3.8.6, when unique constraint
       enforcement was added.
     - Removed remaining uses of the smartmatch operator, thus eliminating
       the Perl 5.38 warnings about its deprecation. (#769)
     - Added Cockroach to the list of valid engines recognized in command-line
       arguments (and a test to ensure new engines won't be omitted in the
       future). Thanks to @NOBLES5E for the spot (#772)!

1.3.1  2022-10-01T18:49:30Z
     - Fixed a bug introduced in v1.3.0 where the Postgres engine would
       always pass the port to `psql`, thus ignoring the `PGPORT` environment
       variable. Thanks to Cam Feenstra for the spot (#675)!
     - Fixed test failures on OSes where the local time zone cannot be
       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

Changes  view on Meta::CPAN

       report (#454).
     - Fixed a Snowflake test failure when the current system username has a
       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.

Changes  view on Meta::CPAN

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

Changes  view on Meta::CPAN

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

Changes  view on Meta::CPAN

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



( run in 0.954 second using v1.01-cache-2.11-cpan-0b5f733616e )