./databases/p5-App-Sqitch, Sensible database change management

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 1.1.0nb3, Package name: p5-App-Sqitch-1.1.0nb3, Maintainer: schmonz

Sqitch is a VCS-aware SQL change management application. What makes
it different from your typical migration-style approaches? A few

* No opinions
* Native scripting
* VCS integration
* Dependency resolution
* No numbering
* Bundling
* Reduced duplication

Required to run:
[textproc/p5-String-ShellQuote] [www/p5-URI] [www/p5-Template-Toolkit] [misc/p5-Locale-libintl] [databases/p5-DBI] [lang/perl5] [security/p5-Digest-SHA] [time/p5-DateTime] [devel/p5-IO-Pager] [devel/p5-Scalar-List-Utils] [devel/p5-List-MoreUtils] [devel/p5-Path-Class] [devel/p5-Devel-StackTrace] [devel/p5-Clone] [devel/p5-Sub-Exporter] [devel/p5-IPC-Run3] [devel/p5-Hash-Merge] [devel/p5-SUPER] [devel/p5-Term-ANSIColor] [devel/p5-namespace-autoclean] [devel/p5-IPC-System-Simple] [devel/p5-Class-XSAccessor] [devel/p5-Try-Tiny] [devel/p5-Config-GitLike] [textproc/p5-Template-Tiny] [devel/p5-Throwable] [textproc/p5-Encode-Locale] [devel/p5-Moo] [textproc/p5-String-Formatter] [www/p5-URI-db] [devel/p5-PerlIO-utf8_strict] [devel/p5-Type-Tiny] [devel/p5-Type-Tiny-XS]

Required to build:
[textproc/p5-Text-Diff] [databases/p5-DBD-SQLite] [devel/p5-Test-Exception] [devel/p5-Test-NoWarnings] [devel/p5-Module-Build] [devel/p5-Test-Deep] [devel/p5-Test-File-Contents] [devel/p5-Test-MockModule] [devel/p5-Capture-Tiny] [devel/p5-Module-Runtime] [devel/p5-Test-Dir] [devel/p5-Test-File] [pkgtools/cwrappers]

Master sites: (Expand)

SHA1: 4301b61b34e86812ae3d2808a1221ab563d074e3
RMD160: ffdf7b02ba6ca2850d92ef6a286e0572aee32c50
Filesize: 586.44 KB

Version history: (Expand)

CVS history: (Expand)

   2020-09-04 15:29:53 by Thomas Klausner | Files touched by this commit (3)
Log message:
*: remove p5-Term-ANSIColor, part of perl
   2020-09-04 13:09:02 by Thomas Klausner | Files touched by this commit (5)
Log message:
*: remove p5-Digest-SHA, part of perl
   2020-08-31 20:13:29 by Thomas Klausner | Files touched by this commit (3631) | Package updated
Log message:
*: bump PKGREVISION for perl-5.32.
   2020-07-06 22:25:52 by Amitai Schleier | Files touched by this commit (2) | Package updated
Log message:
Update to 1.1.0. From the changelog:

- Fixed Perl Pod errors, thanks to a pull request from Mohammad S Anwar
- Fixed test failures when running with the localization set to German
  or Italian. Thanks to Slaven Rezić for the report (#472).
- Fixed an issue when the full name of the current user is not set, so
  that it properly falls back on the username. Thanks to Slaven Rezić and
  Matthieu Foucault for the report and testing various fixes (#473).
- Eliminated an error when using the `-t` option to specify a target, due
  to a missing dependency declaration in the Target class. Thanks to
  Clinton Adams for the fix (#509)!
- Updated the IPC::System::Simple Win32 workaround added in 0.9999 to
  properly support released versions of IPC::System::Simple. This fixes
  errors running the database command-line clients on Windows (#503).
- Sqitch now only passes the `--password` option to the MySQL client if
  it was not read from the `.my.cnf` file, as it's more secure to let
  the client use `.my.cnf`, and it eliminates a warning from recent
  versions of the client. Thanks to Kiel R Stirling for the fix (#484)!
- Added a note to the tutorials to skip setting the `engine.$engine.client`
  config when using the Docker image.
- Added the new `check` command, which compares the SHA1 hashes of the
  deploy scripts to the database, and reports if any have been modified
  since they were deployed. Thanks to Matthieu Foucault for the pull
  request and diligent work on this feature (#477)!
- Added the `--modified` option to the `rebase` and `revert` commands, to
  revert to the earliest change with a modified deploy script. Handy for
  rapid rebasing during iterative development cycles. Thanks to Matthieu
  Foucault for this feature (#477)!
- Fixed an issue where the Snowflake engine would complain about not
  finding the account name even for commands that don't need them, such
  as `init`. Thanks to Stack Overflow user vbp13 for the report (#502).
   2019-08-11 15:25:21 by Thomas Klausner | Files touched by this commit (3557) | Package updated
Log message:
Bump PKGREVISIONs for perl 5.30.0
   2019-06-20 05:18:49 by Amitai Schleier | Files touched by this commit (1) | Package updated
Log message:
Update HOMEPAGE (https).
   2019-06-05 20:31:06 by Amitai Schleier | Files touched by this commit (2) | Package updated
Log message:
Update to 1.0.0. From the changelog:

- Fixed test failure due to a hard-coded system error that may be
  localized on non-en-US hosts. Thanks to Slaven Rezić for the catch
- Now require Test::MockModule 0.17 to silence a warning during testing.
  Thanks to Slaven Rezić for the suggestion.
- Fixed an error when Sqitch is run with no arguments. Thanks to Henrik
  Tudborg for the report (#428).
- Fixed missing dependency on IO::Pager in the distribution metadata.
- Removed use of File::HomeDir, thanks to a PR from Karen Etheridge
- Updated the tagline from "Sane database change management" to \ 
  database change management" out of sensitivity to those subject to
  mental illness (#435).
- Removed double-quoting of SQLite commands on Windows, inadvertently
  added by the workaround for Windows quoting in v0.9999.
- Fixed a Snowflake issue where Sqitch failed to recognize the proper
  error code for a missing table and therefore an uninitialized registry.
  Thanks to @lerouxt and @kulmam92 for the report and fix (#439).
- Added check for project initialization when no engine config can be
  found. When run from a directory with no configuration, Sqitch now
  reports that the project is not initialized instead of complaining
  about a lack of engine config (#437).
- Documented Snowflake key pair authentication in
  `sqitch-authentication`, as well as `$SNOWSQL_PRIVATE_KEY_PASSPHRASE`
  in `sqitch-environment`. Thanks to Casey Largent for figuring it out
- Added the German localization. Thanks to Thomas Iguchi for the pull
  request (#451).
- Renamed the French localization from "fr" to "fr_FR", so \ 
that systems
  will actually find it.
- Added the `ask_yes_no()` method as a replacement for `ask_y_n()`, which
  is now deprecated. The new method expects localized responses from the
  user when translations are provided. Defaults to the English "yes" and
  "no" when no translation is available. Suggested by German translator
  Thomas Iguchi (#449).
- Fixed a bug where only project without a URI was allowed in the
  registry. Thanks to Conding-Brunna for the report (#450).
- Clarified the role of project URIs for uniqueness: They don't allow
  multiple projects with the same name, but do prevent the deployment of
  a project with the same name but different URI.
- Fixed an issue where target variables could not be found when a target
  name was not lowercase. Thanks to @maximejanssens for the report
- Now require Config::GitLike 1.15 or higher.
- Fixed the indentation of variables emitted by the `show` actions of the
  `target` and `engine` commands, fixing a "Negative repeat count does
  nothing" warning in the process. Thanks to @maximejanssens for the
  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).
   2019-02-02 17:59:30 by Amitai Schleier | Files touched by this commit (2) | Package updated
Log message:
Update to 0.9999. From the changelog:

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

- 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
- 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
- Added advice to use the PL/pgSQL `ASSERT()` function for verify scripts
  to the Postgres tutorial. Thanks to Sergii Tkachenko for the PR (#425).

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

[Options Unification]
- Added the `--chdir`/`--cd`/`-C` option to specify a directory to change
  to before executing any Sqitch commands. Thanks to Thomas Sibley for
  the suggestion (#411).
- Added the `--no-pager` option to disable the pager (#414).
- Changed command-line parsing to allow core and command options to
  appear anywhere on the line. Previously, core options had to come
  before the command name, and command options after. No more. The caveat
  is that command options that take arguments should either appear after
  the command or use the `--opt=val` syntax instead of `--opt val`, so
  that Sqitch doesn't think `val` is the command. Even in that case, it
  will search the rest of the arguments to find a valid command.
  However, to minimize this challenge, the documentation now suggests
  and demonstrates putting all options after the command, like so:
  `sqitch [command] [options]`.
- Simplified and clarified the distinction between core and command
  options by removing all options from the core except those that affect
  output and runtime context. The core options are:
  * -C --chdir --cd <dir>  Change to directory before performing any actions
  *    --etc-path          Print the path to the etc directory and exit
  *    --no-pager          Do not pipe output into a pager
  *    --quiet             Quiet mode with non-error output suppressed
  * -V --verbose           Increment verbosity
  *    --version           Print the version number and exit
  *    --help              Show a list of commands and exit
  *    --man               Print the introductory documentation and exit
- Relatedly, single-letter core options will now always be uppercase,
  while single-letter command options will be lowercase. As such, `-V`
  has been added as an alias for `--version`, although `-v` remains for
  now, undocumented. It may be removed in the future should a compelling
  use for `-v` in a command be discovered.
- All other options have been moved to the commands they affect. Their
  use should remain mostly unchanged now that command options are parsed
  from anywhere on the command-line, although we recommend that all
  options come after commands. The options were moved as follows:
  * `--registry`, `--client`, `--db-name`, `--db-user`, `--db-host`, and
    `--db-port` (and their aliases) have been moved to the `checkout`,
    `deploy`, `log`, `rebase`, `revert`, `status`, `upgrade`, and
    `verify` commands.
  * `--plan-file` and `--top-dir` (deprecated; see below) have been moved
    to the `add`, `bundle`, `checkout`, `deploy`, `rebase`, `revert`,
    `rework`, `show`, `status`, `tag`, and `verify` commands. They were
    already supported by the `init`, `engine`, and `target` commands
    (where `--top-dir` is not deprecated).
- Because some command options conflicted with core options, a few
  options have been removed altogether, including:
  * The `--verbose` option on the `--engine` and `--target` commands has
    been removed, but no visible change should be apparent, since those
    commands now read the core `--verbose` option.
  * The undocumented `--dir` alias for `--top-dir` has been removed, as
    it conflicted with the option of the same name but different meaning
    in the `init`, `engine`, and `target` commands.
  * The `-d` alias for `--set-deploy` in the `rebase` and `checkout`
    commands has been changed to `-e` so as not to conflict with the `-d`
    alias for `--db-name`.
  * Added tests for all commands to ensure none of their options conflict
    with core options. Will help prevent conflicts in the future.

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

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