Revision history for Perl extension App::Sqitch

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