Revision history for Perl extension App::Sqitch 0.82 2012-08-03T21:25:27Z - Now require Moose 2.0300, since MooseX::Role::Parameterized, which requires Role::HasMessage, requires it, anyway, - Fixed test failure in `t/pg.t` when running on Test::More 0.94. - Require POSIX in `t/datetime.t` to fix test failure with CentOS 6 Perl. Not sure why it did not fail anywhere else, but it's harmless enough to make sure it's loaded early. 0.81 2012-08-03T11:34:46Z - Removed wayward `/l` from a regular expression, which breaks Perls earlier than 5.14, and is not needed anyway. - Fixed error in `log` that caused invalid output on Perls earlier than 5.14. Seems that `return` is required for `when` statements meant to return a value, and postfix `when` is not supported in Perl 5.10. 0.80 2012-08-01T21:54:00Z - Added the `log` command to `sqitchcommands.pod`, which is shown as the output of `sqitch help`. - Added `user.name` and `user.email` configuration variables. - Now using `user.name` and `user.email`, rather than the system or database user name, to log the user committing changes to a database. - Database-specific options are now prefixed with `--db-`. - 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. - Renamed "steps" to "changes". - New plan file spec. + Tags are just labels on a particular change, no longer a list of changes. + Dependencies now specified in the plan file, not in the deploy script. + Changes can be specified as deploys or reverts, though reverts are not currently supported. + Changes can be specified with an optional leading `+` for deploy or `-` for revert, which will eventually be important for conflict management. + Dependencies can be specified as other change names, tags, or a change as of a tag (e.g., `foo@beta`). + Pragmas can be specified with a leading `%`. Only `%syntax-version` is currently recognized; all others are ignored. - Renamed the `add-step` command to just `add`. - Added the `tag` command. - Added the `revert` command. - Added the `rework` command. - Added exception objects and started using them. - Added localization support and started using it. - Added IDs to changes and tags. These are SHA1s generated from the return value of the new `info` method, which describes the change or tag. - Updated the PostgreSQL engine to comply with the new Engine API. - Updated the PostgreSQL engine to use IDs for tracking changes and tags. - Eliminated the term "node" from the plan implementation and docs. - Updated the engine base class for the new plan API, and to just deploy changes one-at-a-time. - Added many new ways to look for changes in the plan, including: + `change_name` + `@tag_name` + `change_name@tag_name` + `change_id` + `tag_id` - The plan file can now be written out with nearly all white space and comments preserved. - Changed the `add` command to write out the plan file after a new change is added. - Change names can now be duplicated, as long as a tag name appears between them. - Renamed `target` to destination in Engine. - Started referring to the change to deploy or revert to in docs as the "target". - PostgreSQL errors will now be thrown as Sqitch exceptions, for proper handling during command execution. - Added required `core.uri` configuration setting. Used to keep change IDs unique across projects. - Added `--mode` option to `deploy`, to trigger reverts on failure to either: + Not at all: keep the latest successful change. + To the last deployed tag + To the point at which the current deploy started - Added the implicit tags `@ROOT` and `@HEAD` for looking up changes in the plan. - Renamed `sql_dir` to `top_dir` and made it default to the current directory. - Changed the location of the plan file to the top directory. This will make it easier to have plans and scripts for multiple database platforms in a single project. - Fixed a bug in the build process so that template files will be properly written to the `etc` directory. - Rewrote `sqitchtutorial` to reflect the new realities. - Updated `sqitch` documentation, and moved the plan file information to App::Sqitch::Plan. 0.31 2012-05-21T22:29:42Z - Fixed some typos and failing tests. 0.30 2012-05-18T15:43:12Z - The `init` command now properly writes out the `[core]` section header when there are only commented core settings. - The `--requires` and `--conflicts` options to `add` now work properly. - Fixed anticipated Win32 test failures in `t/init.t`.' - Fixed the `--plan-file`, `--top-dir`, and other directory options so that they no longer throw errors, but actually work. - Implemented the plan parser. It's designed to later be subclassed to support VCS integration. Includes dependency parsing and sorting. - Switched to IPC::System::Simple instead for system/capture code. - Implemented Engine interface for deploying and reverting tags. - Implemented PostgreSQL engine. It uses a lock to ensure that only one deployment can run at any time. - Added the `deploy` command. it is now possible to deploy to a PostgreSQL database. 0.20 2012-05-01T02:48:47Z - Added `--local` option to `sqitch config`. - Renamed `project_file()` to `--local_file()` in App::Sqitch::Config. - `sqitch init` now writes core and engine config settings with default values to the configuration file. This makes it easier for folks to get started editing it. - Implemented `add` command. Includes support for system-wide or use-specific templates using Template::Tiny. - Added `etc` directory with default templates. This is installed into `$Config{prefix}/etc/skitch`, unless built with `--prefix` or `--install_base`, in which case it will simply be installed into `etc` in that directory. - Added `--etc-path`, so that one can know where the system-wide configuration and templates are to be found. 0.11 2012-04-27T06:44:54Z - Implemented `init` command. - Started sketching out the engine interface, with preliminary PostgreSQL and SQLite implementations. - Require Perl v5.10.1 (did before, but in the wrong place, so it was ignored). - Fixed test failures on different verions of Moose. - Fixed test failure on Perl 5.12. 0.10 2012-04-25T20:46:59Z - Initial unstable release. - Implemented `help` command. - Implemented `config` command, very similar to `git-config`.