App-Sqitch
view release on metacpan or search on metacpan
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).
- 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.
verify script fails, as that could lead to data loss (yikes!). Thanks
to BryLo for the report (issue #112).
0.981 2013-09-06T00:22:26Z
- Now use Encode::Locale to try to decode the user's full name from the
system encoding when fetched from the system on all OSes. Note that
this is not necessary if the `user.name` config is explicitly set, as
recommended. Issue #107.
- Removed the special-case handling of the user's full name fetched from
the system on OS X.
- Added call to `sleep` to test in an attempt to fix SQLite failures.
- The SQLite engine now requires that the SQLite client be 3.3.9 or
later, for support of the `-bail` option.
- Bug fix: The MySQL engine now properly uses the host, port, and
password options when connecting to the database. Thanks to vreb87 for
the report!
0.980 2013-08-28T21:40:00Z
- Changed the default SQLite Sqitch database name from
`$dbname-sqitch.$suffix` to `sqitch.$suffix`. The `$suffix` still
comes from the destination database name. This breaks compatibility
with previous releases. If you need the old name, set it with
`sqitch config core.sqlite.sqitch_db $dbname`.
- Fixed encoding of the user's full name when fetched from the system on
OS X. Thanks to Tomohiro Hosaka for the pull request!
- Fixed test failures when DBD::SQLite is installed but compiled with
SQLite 3.7.10 or lower.
- Fixed a bug where declaring a dependency on a reworked change would
incorrectly result in the error "Key "foo" matches multiple changes".
Thanks to BryLo for the report (issue #103).
- Modified tests to allow them to run in parallel without stomping on
each other.
- Bundling of options, such as `-vvv`, now works properly (issue #108).
- Added alias `--get-regexp` for `--get-regex` to the `config` command.
This brings it in line with the documentation for the `config` command
(Issue #110).
- Fixed all of the `config` command actions that contain a dash so that
they actually work. Thanks to Ètefan Suciu for the report (issue #110).
- All leading and trailing white space is now trimmed from plan notes,
rather than just vertical white space. Thanks to Ronan Dunklau for the
report (issue #106).
- The `status` command now notices if the specified database is
uninitialized and says as much, rather than dying with an SQL error
(issue #109).
- When reading the user's username from the system Sqitch now uses
Encode::Locale to try to decode the value from the system encoding.
Issue #107.
- Compatibility change: Changed the location and name of script template
files. Previously they were called `deploy.tmpl`, `revert.tmpl`, and
`verify.tmpl`, and they lived in the `templates` subdirectory of the
system-wide and user-specific configuration directories. They now live
in subdirectories of the `templates` directory named for each action
(deploy, revert, and verify), and with file names matching engine names
(`pg.tmpl`, `sqlite.tmpl`, `oracle.tmpl`, and `mysql.tmpl`). The
installer will move old files from the system-wide config directory
(`sqitch --etc-path`) to their new homes, named `pg.tmpl` and
`sqlite.tmpl`. It assumes no customizations exist for Oracle. If that's
not true in your case, simply copy the `pg.tmpl` files to
`oracle.tmpl`.
- Added the `--template-name` option to the `add` command. By default, it
looks for templates named for the current engine. The option allows for
the user of task-specific templates. For example, if you create
templates named `createtable.tmpl` in the `deploy`, `revert`, and
`verify` subdirectories of `~/.sqitch/templates`, You can specify
`--template-name createtable` to use those templates when adding a
change.
- Added the `--exists` option to the `show` command.
- Fixed the `--set` option to the `add` command so that duplicate keys
have their values passed to the template as an array, as documented.
- If Template::Toolkit is installed, the `add` command will use it for
processing templates instead of Template::Tiny. This makes it easy to
upgrade the templating environment just by installing a module.
0.973 2013-07-03T13:47:22Z
- Now Require DBD::SQLite compiled with SQLite 3.7.11 or higher. It
always has, but now it throws a meaningful exception if an older
version is compiled into DBD::SQLite. Thanks to Damon Buckwalter for
the report.
- When a deploy fails because of missing dependencies, the list of
missing dependencies no longer contains duplicates. Thanks to Damon
Buckwalter for the report.
0.972 2013-05-31T23:26:52Z
- Fixed test failures on Windows.
- Fixed locale configuration on Windows so that `sqitch` will actually
run, rather than exiting with an error about `LC_MESSAGES` not being
set.
- Fixed a test hang on Windows when DBD::Oracle is installed but the
Oracle libraries (`OCI.dll`) are not or cannot be found. This was
triggering a UI dialog that did not dismiss itself. Using Win32::API
to work around this issue. Thanks to Jan Dubois for the fix.
0.971 2013-05-18T21:08:51Z
- Removed most uses of the smartmatch operator, since as of Perl 5.17.11
it is marked as experimental, and silenced the warning where it is
still used.
- Added 0.1s sleep between logging changes back-to-back in the engine
tests, mostly to try to get SQLite to generate different timestamps.
Pretty sure the recent test failures have been due to the passage of
less than a millisecond between the two inserts.
- Added the `shell` and `quote_shell` methods to Sqitch.pm for shelling
out a command.
- Sqitch now shells out to an editor when opening a file for the user to
edit. For example, if the `$EDITOR` environment variable is set to
`"emacs -nw"`, it will now work. Thanks to Florian Ragwitz for the
report (issue #80).
- Removed the pod-checking tests from the distribution.
0.970 2013-05-09T00:21:06Z
- Fixed the default ordering of changes displayed by the `plan` command.
They are now ascending by default.
- Switched to PerlIO::utf8_strict for fast character encoding and
decoding.
- The help emitted when an unknown option is passed to `sqitch` now
consists of a usage statement and brief table of options, rather than
the entire man page.
- Added the project name in a header to the output of the `plan` command.
- Added the Oracle engine.
- Added `sqitchtutorial-oracle.pod`, a Oracle-specific variant of
`sqitchtutorial.pod`.
- Added missing version declaration to the App::Sqitch::Plan::* modules.
or higher.
- Added the `checkout` command. Pass it the name of a VCS branch, and it
will compare the plans between that branch and the current branch,
revert to the last common change, check out the branch, and then
redeploy. This makes it easy to switch between working branches that
have different sets of commits. Git-only for now. Idea and code by
Ronan Dunklau.
- The `rebase` command no longer fails if the database is already
reverted, but just makes a note of it and goes on to the deploy.
- Added the `plan` command. It's like `log`, but shows a list of changes
in the plan, rather than events recorded in the database.
- Added `search_changes()` to Plan. Used by the `plan` command.
- Added the `--oneline` option to the `log` command.
- Allow tagging of an arbitrary change, not just the last change in the
plan, by passing a change specification (name, ID, or tag) as the
second argument to the `tag` command.
- Updated error messages to note that blank characters are not allowed in
project, change, or tag names.
- Factored most of the engine-specific code into
App::Sqitch::Role::DBIEngine. Future DBI-based engines should be able
to use this role to handle most of the work.
- Factored the live engine tests int `t/lib/DBIEngineTest`. Future
DBI-based engines can use this module to do all or most of the live
testing.
- Added the SQLite engine. The Sqitch metadata is stored in a separate
file from a database, by default in the same directory as the database
file.
- Added `sqitchtutorial-sqlite.pod`, a SQLite-specific variant of
`sqitchtutorial.pod`.
0.953 2013-02-21T23:37:57Z
- Fixed test failure in `t/engine.t` triggered by a clock tick.
- Changed the verify template to end with `ROLLBACK` rather than
`COMMIT`. This it to encourage folks to make no lasting changes in
verify tests.
- Fixed exception triggered on an attempt to revert or rebase `--to` a
change that does not exist in the database.
- Added recommendation for Pod::Simple to the build process.
- Added the `--etcdir` build option to specify the directory in which
configuration and template files should be installed. Defaults to the
`etc/sqitch` subdirectory of the `--prefix`, `--install_base`, or
Perl's prefix.
- Added the `--installed_etcdir` build option. This is used to set
the location of the system etc directory. Defaults to the value of
`--etcdir`.
- When building with `--prefix` or `--install_base`, and without
`--etcdir`, the configuration files and tmeplates are now installed
into `etc/sqitch` in that directory, rather than just `etc`. This is to
enable packaging systems to move the directory to the proper location.
0.952 2013-01-12T00:02:54Z
- Switched from Moose to Mouse whever possible. Speeds load and runtime
20-30%. Thanks to Michael Schwern for the pull request!
0.951 2013-01-08T00:21:58Z
- Fixed double "@" displayed for tags in the output of `revert`.
- Fixed reversion of reworked changes to run the original revert script,
rather than the reworked script.
- Added `is_reworked` accessor to App::Sqitch::Plan::Change.
- Changed the behavior determining the file name to use for reworked
change scripts. It now looks for a deploy script using the name of any
tag between the reworked instances of a change and selects the first
one it finds that exists. This will allow Sqitch to find the proper
script name even if new tags have been added to the plan (issue #70).
0.950 2013-01-03T23:09:42Z
- Fixed the "Name" header in `sqitch-rebase` so that it will actually
show up on the CPAN search sites.
- Fixed test failure triggered by the passage of time in `t/engine.t`.
- At the start of a `deploy`, if the most recently deployed change has
any unlogged tags (that is, tags added since the last `deploy`), they
will be logged before the `deploy` continues (issue #60).
- 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
( run in 1.031 second using v1.01-cache-2.11-cpan-99c4e6809bf )