- Fixed an error where Oracle sometimes truncated timestamp formats so
that date parsing failed. Thanks to Johann Wilfling for the report and
@nmaqsudov for the solution (#316).
- Added pager configuration, prioritizing the new `core.pager`
configuration variable over the `$PAGER` environment variable. The new
`$SQITCH_PAGER` environment variable trumps all. Thanks to Yati Sagade
for the pull request (#329).
- Documented the `core.editor` configuration variable.
- Updated PostgreSQL registry detection to avoid errors when not running
Sqitch as a superuser and the registry schema already exists. Done by
looking for the `changes` table in the `pg_tables` view instead of
looking for the registry schema in the `pg_namespace` catalog table,
and by using `CREATE SCHEMA IF NOT EXISTS` on PostgreSQL 9.3 and
higher. Thanks to @djk447 for the pull request (#307).
- Updated PostgreSQL registry detection to avoid errors when the `psql`
client is newer than the server version. Sqitch now fetches the version
from the server instead of parsing it from the client.
- Specifying a change before a target name on the command-line no longer
ignores the target (#281).
- The `--db-*` options are now more consistently applied to a target,
including when the target is specified as a URI (#293).
- `HEAD` and `ROOT` are now properly recognized as aliases for `@HEAD`
and `@ROOT`, when querying the database. This was supposedly done in
v0.991, but due to a bug, it wasn't really. Sorry about that.
- The `revert` and `verify` commands will now fail if a change is
specified and matches multiple changes. This happens when referencing a
reworked change only by its name. In this case, Sqitch will emit an
error listing properly tag-qualified changes to use. Suggested by Jay
Hannah (#312).
- Sqitch no longer returns an error when a target name is passed to a
command and the default target's plan file does not exist (#324).
- Added missing options to the `rework` usage statement. Thanks to Jay
Hannah for the PR (#342).
- Passing an engine name or plan file as the `<database>` parameter to
the `log`, `status`, and `upgrade` commands now works correctly,
matching what the documention has said for some time (#324).
- Added the `--target` option to the `plan` and `show` commands.
- Added the `<database>` parameter to the `plan` command.
- Sqitch now loads targets from all config files, not just the local
file, when trying to determine if a `<database>` parameter is a plan
file name.
- Improved the error message when a change is found more than once in a
plan, typically a reworked changed referenced only by name. The error
will no longer be "Key at multiple indexes", but "Change is ambiguous.
Please specify a tag-qualified change:", followed by a list of
tag-qualified variants of the change.
- Fixed a bug where the verify command would return a database error when
it finds no registory. Now it reports that the registry wasn't found in
the database.
Upstream changes:
0.9995 2016-07-27T09:23:55Z
- Taught the `add` command not to ignore the `--change` option.
- The `add` command now emits a usage statement when no change name is
passed to it.
- The `add` command now helpfully suggests using the --change option when
attempting to add a change with the same name as a target. Thanks to
Ivan Nunes for the report!
- The `tag` command now helpfully suggests using the --tag option when
attempting to add a tag with the same name as a target.
- Added `--global` as an alias for `--user` to the `config` command. This
alias benefits the muscle memory of Git users.
- Added a note for Git users to the `sqitch-revert` documentation, to
head off potential confusion with `git revert`. Thanks to Eric
Br矇chemier for the "time travel" analogy and wording.
- Fixed an "uninitialized value" error when creating a registry database
on Windows. Thanks to Steven C. Buttgereit for the report (Issue #289).
- Fixed editor selection to prioritize the `core.editor` configuration
variable over the `$EDITOR` environment variable. The `$SQITCH_EDITOR`
environment variable still trumps all. Thanks to Jim Nasby for the pull
request (#296).
- Added detection of the `$VISUAL` environment variable to Editor
selection, prioritzed after the `core.editor` configuration variable
and before the `$EDITOR` environment variable. Thanks to Jim Nasby for
the pull request (#296).
- Updated the DateTime code to set the locale via `set_locale()` instead
of `set()`, as the latter may actually change the local time
unintentionally, and has been deprecated since DateTime v1.04. Thanks
to Dave Rolsky for the pull request (#304).
0.9994 2016-01-08T19:46:43Z
- Reduced minimum required MySQL engine from 5.1.0 to 5.0.0. Thanks to
@dgc-wh for testing it (Issue #251).
- Fixed floating-point rounding issue with SQLite registry versions on
Perls with 16-byte doubles. Thanks to H. Merijn Brand for the report
and testing.
- Fixed an error when adding an engine with the `engine` command. Thanks
to Victor Mours for the report and fix!
- Updated the Oracle engine to support Oracle Wallet connection strings,
where no username or host is in the connection URI. Thanks to Timothy
Procter for the patch!
- Improved the installer's selection of the prefix in which to install
`etc` files to better match the `--installdirs` option, which defaults
to the "site" directories. Thanks to @carragom for the pull request
(#265).
- Added missing dash to `-engine` in sample calls to `sqitch init` in the
tutorials. Thanks to Andrew Dunstan for the spot (Issue #268).
- Fixed broken Vertica documentation links.
- Attempting to revert a database with no associated registry no longer
reports the registry as version 0, but correctly reports that no
registry can be found. Thanks to Arnaldo Piccinelli for the spot (Issue
#271).
- Fixed the search for change IDs in engines to match the search for
changes. Specifically, change ID seaerch now properly handles the
offset characters `~` and `^`. This bug mainly affected the `verify`
command, but it's good to address the inconsistency, done mainly by
adding the `find_change_id` and `change_id_offset_from_id` methods to
complement the `find_change` and `change_offset_from_id` methods.
Thanks to Andrew Dunstan for the spot (Issue #272).
- Fixed the `flips` table example in the MySQL tutorial. It was
inappropriately copied from the PostgreSQL tutorial at some point.
Thanks to Jeff Carpenter for the spot (Issue #254)!
0.9993 2015-08-17T17:55:26Z
[Bug Fixes]
- Eliminated test failures due to warnings from DateTime::Locale when
`LC_TIME` is set to C.UTF-8. Thanks to Shantanu Bhadoria for the report
and Dave Rolsky for the workaround.
- Fixed an error checking the registry version when the local uses a
comma for decimal values. Thanks to Steffen M羹ller for the report
(Issue #234).
- Worked around an error setting the MySQL storage engine using versions
of DBI prior to 1.631. Thanks to melon-babak for the report!
- Fixed an error from the Oracle engine when deploying more than 1000
changes. Thanks to Timothy Procter and Minh Hoang for the report and
testing the fix.
- Fixed a bunch of typos in error messages, comments, and documentation.
Thanks to Dmitriy for the pull request!
- Fixed test failures due to new warnings from File::Path on Perl
5.23.1.
- On Firebird, Looking up a change and tag in the database (via the
`--onto` option to `rebase` or the `--to` option to `revert`, among
others) would sometimes return the incorrect change if the change has
been reworked two or more times. Was fixed for the other engines in
v0.9991.
- Fixed the `--all` option used to apply a command to all known targets
so that it loads only targets specified by the local configuration.
Otherwise, user and system configuration can get in the way when they
specify engines and targets not used by the current project.
[Improvements]
- Added support for the `--set` option when deploying to MySQL. Thanks to
Chris Bandy for figuring out how to do it!
- Added support for a "reworked directory". By default, reworked change
scripts live in the deploy, revert, and verify directories along with
all the other change scripts. But if that starts to get too messy, or
you simply don't want to see them, add a `reworked_dir` setting to the
core, engine, or target config and reworked scripts will be stored
there, instead. Also supported are `reworked_deploy_dir`,
`reworked_revert_dir`, and `reworked_verify_dir`.
- Added the `--dir` option to the `init`, `engine`, and `target`
commands.
- Copied the core configuration options (`--engine`, `--target`,
`--plan-file`, `--registry`, etc.) to the `init`, `engine`, and
`target` commands. This means that they can be specified after the
command, which is a bit more natural. It also means that the
`--registry` and `--client` options of the `target` are no longer
deprecated.
- The `init` command on longer writes out commented values for the
`deploy_dir`, `revert_dir`, or `verify_dir` settings. I think these
settings are not commonly used, and it would start to get crowded if we
also added their "reworked" variants, which will be used still less.
- Added the `alter` action to the `engine` and `target` commands to set
engine and target properties.
- Added support for setting reworked directories to the `engine` and
`target` commands.
- Reformatted the output of the `engine` and `target` command `show`
actions to include reworked directories, and to bit a bit less flat.
- Attempting to add or alter an engine with a target URI that connects to
a different engine now triggers an error. For example, you can't set
the target for engine `pg` to `db:sqlite:`.
- The `add` and `alter` actions of the `engine` and `target` commands
now create script directories if they don't already exist.
- The `add` action of the `engine` and `target` commands now creates a
plan file if one does not exist in the specified location for the
engine or target.
- Added the `deploy_dir`, `revert_dir`, and `verify_dir` methods to
App::Sqitch::Plan::Change. Each points to the proper directory for the
target depending on whether or not the change has been reworked.
- In the MySQL engine, the following URI query params will be converted
to options passed to the command-line client, if they're present:
* mysql_compression=1 => --compress
* mysql_ssl=1 => --ssl
* mysql_connect_timeout => --connect_timeout
* mysql_init_command => --init-command
* mysql_socket => --socket
* mysql_ssl_client_key => --ssl-key
* mysql_ssl_client_cert => --ssl-cert
* mysql_ssl_ca_file => --ssl-ca
* mysql_ssl_ca_path => --ssl-capath
* mysql_ssl_cipher => --ssl-cipher
[Documentation]
- Added the "Overworked" section to sqitch-configuration guide with an
example of how to move reworked change scripts into a `reworked_dir`.
[Deprecations]
- Deprecated the `set-*` actions in the `engine` and `target` commands in
favor of the new `alter` action.
- The core `--deployed-dir`, `--revert-dir`, and `--verify-dir` options
are deprecated in favor of the `--dir` option on the `init`, `engine`,
and `target` command.
0.9992 2015-05-20T23:51:41Z
- On PostgreSQL, Sqitch now sets the `client_encoding` parameter to
`UTF8` for its own connection to the database. This ensures that data
sent to and from the databse should always be properly encoded and
decoded. Users should still set the proper encodings for change scripts
as appropriate.
- Fixed test failures due to path differences on Windows.
- DateTime::TimeZone is now explicitly required in an attempt to head off
"Cannot determine local time zone" errors.
- Corrected some typos and thinkos in `sqitchtutorial-oracle`, thanks to
George Hartzell.
- Improved the script to upgrade an Oracle registry to v1.0 to support
versions prior to Oracle 12, thanks to Timothy Procter.
- Added missing closing parenthesis to the "Nothing to deploy" message.
Thanks to George Hartzell for the pull request (Issue #226).
- Replaced the unique constraint on the `script_hash` column in the
`changes` registry table with a unique constraint on `project` and
`script_hash`. This is to allow a deploy script to be used in more than
one project in a single database. This change increments the registry
version to v1.1. Thanks to Timothy Procter for the report.
- Updated the registry check constraints to have consistent names on the
engines that support them. This will make it easier to modify the
constraints in the future.
- Fixed precision issues with the registry version on MySQL and Firebird.
- Added comment to sqitch-passwords guide that MySQL::Config is required
to read passwords from the MySQL configuration files. Thanks to
Sterling Hanenkamp for the patch!
0.9991 2015-04-03T23:14:39Z
[Improvements]
- Reduced minimum required MySQL engine from 5.6.4 to 5.1.0. Versions
prior to 5.6.4 lose the following features:
* Versions earlier than 5.6.4 is fractional second precision on
registry `DATETIME` columns. Since the ordering of those timestamps
is so important to the functioning of Sqitch, it will sleep in 100 ms
increments between logging changes to the registry until the time has
ticked over to the next second. Naturally, reverts and deploys will
be a little slower on versions of MySQL before 5.6.4, but accurate.
* Versions earlier than 5.5.0 lose the `checkit()` functions, which
would otherwise be used to emulate CHECK constraints in the registry,
as well as in user-created verify scripts, as recommended in the
MySQL tutorial, `sqitchtutorial-mysql`.
- Added a script to update the `DATETIME` columns in a MySQL Sqitch
registry that was upgraded to MySQL 5.6.4 or higher. It will be
installed as `tools/upgrade-registry-to-mysql-5.6.4.sql` in the
directory returned by `sqitch --etc`.
- Added a script to add the `checkit()` function and registry triggers to
emulate CHECK constraints to a MySQL Sqitch registry that was upgraded
to MySQL 5.5.0 or higher. It will be installed as
`tools/upgrade-registry-to-mysql-5.5.0.sql` in the directory returned
by `sqitch --etc`.
- The `init` command now throws an error when the plan file already
exists and is invalid or defined for a different project. Thanks to
Gabriel Potk獺ny for the suggestion (Issue #214).
- All commands that take target arguments can now specify them as engine
names or plan file paths as well as target names and URIs.
- Added the `--all` option and the `$command.all` configuration variable
to the `add`, `rework`, `tag`, and `bundle` commands. This option tells
the commands to do their thing for all plans known from the
configuration, not just the default plan.
- Pass engine, target, or plan file names to the `add`, `rework`, `tag`,
and `bundle` commands` commands to specify specify one or more targets,
engines, and plans to act on.
- Added the `--change` option to the `add`, `rework`, and `tag` commands
to distinguish the change to be added, reworked, or tagged from
plan-specifying arguments, if necessary.
- Added the `--tag` option to the `tag` command to distinguish the tag to
be added from plan-specifying arguments, if necessary.
- Changed the short variant of the `--conflicts` option to the `add` and
`rework` commands from `-c` to `-x`. The `-c` option is now used as the
short variant for `--change` (and `--conflicts` has almost certainly
never been used, anyway).
- Added the `engine` and `project` variables to the execution of script
templates by the `add` command. The default templates now use it to
make their first lines one of:
* -- Deploy [% project %]:[% change %] to [% engine]
* -- Revert [% project %]:[% change %] from [% engine]
* -- Verify [% project %]:[% change %] on [% engine]
[Bug Fixes]
- DateTime::TimeZone::Local::Win32 is now required on Windows.
- The MySQL engine no longer passes `--skip-pager` on Windows, since
it is not supported there. Thanks to Gabriel Potk獺ny for the report
(Issue #213).
- Fixed "no such table: changes" error when upgrading the SQLite
registry.
- Fixed upgrade failure on PostgreSQL 8.4. Thanks to Phillip Smith for
the report!
- Fixed an error when the `status` command `show_changes` and `show_tags`
configuration variables were set. Thanks to Adrian Klaver for the
report (Issue #219).
- Fixed `log` and `plan` usage statements to properly spell `--abbrev`.
Thanks to Adrian Klaver for the report (Issue #220).
- Fixed the formatting of change notes so that a space precedes the `#`
character whether the note was added by the `--note` option or via an
editor.
- Fixed a bug when parsing plan files with DOS/Windows line endings.
Thanks to Timothy Procter for the report (Issue #212).
- Looking up a change and tag in the database (via the `--onto` option to
`rebase` or the `--to` option to `revert`, among others) would
sometimes return the incorrect change if the change has been reworked
two or more times. Thanks to BryLo for the report!
[Documentation]
- Updated docs to be consistent in referring to the location of the system
configuration and template location as `$(prefix)/etc/sqitch`. Also
added notes pointing to the `--etc-dir` to find out exactly what that
resolves to. Suggested by Joseph Anthony Pasquale Holsten (Issue #167).
[Deprecations]
- Reverted deprecation of the database connection options. Target URIs
are still generally preferred, but sometimes you want to use a target
but just change the user name or database name. Retaining the options
is the easiest way to do this. Plus, a fair number of people have
scripts that use these options, and it seems petty to break them. Sorry
for the double-take here! The list of un-deprecated options is:
* `--db-client`
* `--db-host`
* `--db-port`
* `--db-username`
* `--db-password`
* `--db-name`
0.999 2015-02-12T19:43:45Z
- Improved MySQL missing table error detection by relying on error codes
instead of matching a (possibly localized) error string.
- Made the registry upgrade more transparent when deploying. Sqitch is
now is a little more vigilent in checking for things being out-of-date
and updating them.
- Fixed an issue where the `status` command would return an error when
run against a an older version of the registry.
- Fixed a Postgres test failure when DBD::Pg is installed but psql is not
in the path.
- Now require Config::GitLike 1.15 to build on Windows in order to avoid
test failures when Cwd::abs_path dies on non-existant paths.
- Clarified the behavior of each `deploy` reversion mode with regard to
deploy script vs. verify script failures, and with the expectation that
deploy scripts are atomic.
- Target passwords can now be set via a single environment variable,
`$SQITCH_PASSWORD`. Its value will override URI-specified password.
- Added the sqitch-passwords and sqitch-environment guides.
0.998 2015-01-15T22:17:44Z
- Fixed a bug in `sqitch engine update-config` where it would add data to
config files that did not previously have them, or report that data was
present in nonexistent config files.
- Added the `releases` table to the databases. This table will keep track
of releases of the Sqitch registry schema.
- The Oracle `registry` variable is now always `DEFINE`d when Oracle
scripts run.
- Added the `upgrade` command, which upgrades the schema for the Sqitch
registry for a target database.
- Added the `script_hash` column to the `changes` registry table. This
column contains a SHA-1 hash of the deploy script for the change at the
time it was deployed. For existing registries, the upgrade script sets
its value to be the same as the change ID. This value is update the
next time a project is deployed to the database.
- The error message when `deploy` cannot find the currently-deployed
change ID in the plan now includes more contextual information,
including the change name, associated tags, and the plan file name.
Suggested by Curtis Poe (Issue #205).
- Comments on Firebird registry objects are now created with the
`COMMENT` command, rather than INSERTs into catalog tables.
- Added support for "merge" events, though none are logged, yet.
Problems found with existing distfiles:
distfiles/D6.data.ros.gz
distfiles/cstore0.2.tar.gz
distfiles/data4.tar.gz
distfiles/sphinx-2.2.7-release.tar.gz
No changes made to the cstore or mariadb55-client distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
{perl>=5.16.6,p5-ExtUtils-ParseXS>=3.15}:../../devel/p5-ExtUtils-ParseXS
since pkgsrc enforces the newest perl version anyway, so they
should always pick perl, but sometimes (pkg_add) don't due to the
design of the {,} syntax.
No effective change for the above reason.
Ok joerg
- 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).
- 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.
- 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
compatability 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!
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
- 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.
Updating this leaf package during the freeze.
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 seach 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
`target` is not passed or configured, or if it has no registry
associated with it, the `config.$engine.registry` configuration
variable is used. If no value is found there, it defaults to an
engine-specific value, usually "sqitch".
[Bug Fixes]
- Fixed a bug when installing under local::lib. Thanks to Thomas Sibley
for the pull request!
- Eliminated "Wide character in print" warnings when piping the `log`
command.
- Documented that reworked changes do not have their verify tests run by
the `verify` command. They do run when using the `--verify` deploy
option.
- Removed the documentation for the `add.with_deploy`, `add.with_revert`,
and `add.with_verify` configuration variables, which were never
implemented.
[Deprecations]
- Deprecated engine-specific connection attributes and configuration
variables. See the "Internals" section for their replacements. The
deprecated options are:
* `core.$engine.username`
* `core.$engine.password`
* `core.$engine.db_name`
* `core.$engine.host`
* `core.$engine.port`
* `core.$engine.sqitch_schema`
* `core.$engine.sqitch_db`
- Deprecated all command-specific options with the string "target" in
them, such as `--to-target`, `--upto-target`, etc. They have been
replaced with options containing the string "change", instead, such as
`--to-change` and `--upto-change`. Few people used these options,
preferring their shorter aliases (`--to`, `--upto`, etc.).
- Deprecated the `--deploy-template`, `--revert-template`, and
`--verify-template` options to the `add` command. They are replaced
with a single option, `--use` which takes a key/value pair for the
script name and template path. This makes it useful for arbitrary
script generation, as well.
- Deprecated the `--deploy`, `--revert`, and `--verify` options to the
`add` command, as well as their `--no-*` variants. They are replaced
with two new options, `--with` and `--without`, to which a script name
is passed. These are useful for arbitrary script generation, as well.
- Deprecated the `add.deploy_template`, `add.revert_template`, and
`add.verify_template` configuration settings. They have been replaced
with a section, `add.templates`, which is more general, and supports
arbitrary script generation, as well.
[Incompatibilities]
- Removed the undocumented `--test` option to the `add` command.
- Changed the meaning of `--target` from specifying a change to
specifying a deployment target. Use the new `--change` option to
specify a change.
0.983 2013-11-21T21:50:12Z
- Fixed "Use of uninitialized value" in the MySQL engine. Thanks to
Jean-Michel REY for the report.
- All tests now protect against failures due to the presence of the
`$SQITCH_CONFIG` environment variable (issue #114).
- The installer now respects the `distdir` option to `Build.PL` when
searching for existing templates. Important for packaging.
- Fixed the error "Table 'sqitch.changes' doesn't exist" when deploying
to a MySQL database that exists but has not been initialized. Thanks to
Jean-Michel REY for the report!
- Refactored the handling of the C<--log-only> option so it sets an
engine attribute, rather than passing the flag to a whole stack of
method calls.
- Fixed "Argument "en_us" isn't numeric" error on Windows.
- Now using `LC_ALL` instead of `LC_MESSAGES` when setting the locale, as
the latter is not present on Windows.
- The sqitch-pg RPM now requires DBD::Pg 2.0.0 or higher.
- Improved handling of invalid command names so that the error message is
less ambiguous when triggered by a Perl parse error.
- Added `-m` as an alias for `--note`, for you Git folks out there.
- Added exception handling to the Postgres and Oracle engines to avoid
unexpected errors when deploying to a database that has not been
deployed to before.
- Updated detection of an uninitialized database to double-check with the
engine that it really thinks it's uninitialized, not just that the
"changes" table is missing. This should catch the case where the
database has its own "changes" table unrelated to Sqitch.
0.982 2013-09-11T18:26:07Z
- Errors thrown by Template toolkit are no longer silently ignored.
- Variables passed to change templates are now cloned before the
execution of each template. This prevents one template from deleting
variable values another template might also need.
- Fixed "The getpwnam function is unimplemented" errors on Win32.
- No longer runs revert scripts when deploying with `--log-only` and a
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.
- Devel::StackTrace 1.30 is now properly required (it was previously
recommended).
- The `--show-tags` and `--show-changes` options to the `status` command
now show the changes when the project plan cannot be found (issue #90).
0.965 2013-04-23T16:25:59Z
- Fixed failing test due to line-ending character variations on Windows.
Many thanks to Jan Dubois for the testing help.
- Replaced all uses of `$/` in output to `"\n"`. Thanks to Jan Dubois for
pointing out the incorrect use of `$/`.
- Fixed build error that prevented installation on Perl 5.10 when the
parent module was not installed.
0.964 2013-04-15T18:47:30Z
- Fixed test failures on Perl versions lower than 5.14 when DBD::SQLite
or DBD::Pg is not installed.
- Removed DBD::SQLite from the list of build dependencies.
- Fixed test failures due to encoded (wide-character) warnings on
triggered on systems with non-english locales. Thanks to Alexandr
Ciornii for the smoke testing that revealed this issue.
- Removed overriding of Throwable's `previous_exception` in
App::Sqitch::X on Throwable 0.200007 and higher, where it is no longer
needed.
- Changed test comparing file contents that fails on Windows to do a
looser comparison and hopefully fix the test failure.
0.963 2013-04-12T19:11:29Z
- Fixed a test failure when Git is in the execution path and the test is
not run from a Git checkout.
- Added `plan` to `sqitchchanges`, the contents of which are shown when
Sqitch is run with no command.
- Removed the unique constraint on tag names in the database, as it
prevented two projects from having the same tag name. Replaced it with
a unique constraint on the project and tag names. Folks with production
PostgreSQL installs should run these queries:
ALTER TABLE sqitch.tags DROP CONSTRAINT tags_tag_key, ADD UNIQUE(project, tag);
COMMENT ON COLUMN sqitch.tags.tag IS 'Project-unique tag name.';
- Fixed failing tests when DBD::SQLite is not installed.
- Removed dependency on Git::Wrapper. The `checkout` command does things
very simply, and we already have tools for running command-line
applications. So we just take advantage of that. The code is no more
complicated than it was before.
- Added the `core.vcs.client` configuration setting. Defaults to `git`
(or `git.exe` on Windows).
0.962 2013-04-10T17:10:05Z
- Fixed failing test on Perl 5.12 and lower.
- Fixed the French translation by re-encoding it in UTF-8 (Ronan
Dunklau).
- Fixed the loading of the editor with placeholder text to properly
encode that text as UTF-8 (Ronan Dunklau).
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
Sqitch is a VCS-aware SQL change management application. What makes
it different from your typical migration-style approaches? A few
things:
* No opinions
* Native scripting
* VCS integration
* Dependency resolution
* No numbering
* Bundling
* Reduced duplication